inmysights Posted December 25, 2015 Share Posted December 25, 2015 I have a very simple script, 6 mouseclicks, MouseClick($MOUSE_CLICK_LEFT, 955,250, 1,0) and I have AutoItConstants.au3 included, with all button includes as well. Simple and easy.As soon as I add these into a function:func Planet1()MouseClick($MOUSE_CLICK_LEFT, 955,250, 1,0)Sleep(3000)MouseClick($MOUSE_CLICK_LEFT, 1237,711, 1,0)Sleep(3000)MouseClick($MOUSE_CLICK_LEFT, 1680, 873, 1,0)Sleep(3000)MouseClick($MOUSE_CLICK_Right)MouseClick($MOUSE_CLICK_Right)MouseClick($MOUSE_CLICK_Right)MouseClick($MOUSE_CLICK_Right)Sleep(2000)EndFuncand I use this with a button:While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Planet1 Planet1() EndSwitchWEnd it fails, but I have no errors in the console, can I debug somehow while hitting the button and watch a debug window?Thank you, I am learning as I go! Link to comment Share on other sites More sharing options...
InunoTaishou Posted December 25, 2015 Share Posted December 25, 2015 Do you mean you're not getting any error messages in the Scite output? $MOUSE_CLICK_LEFT and $MOUSE_CLICK_Right are not declared, would be the error messages you should get. Replace them with "Left" and "Right" (respectively) and it will workMouseClick("Left", 955, 250, 1,0) Sleep(3000) MouseClick("Left", 1237,711, 1,0) Sleep(3000) MouseClick("Left", 1680, 873, 1,0) Sleep(3000) MouseClick("Right") MouseClick("Right") MouseClick("Right") MouseClick("Right") Sleep(2000) Link to comment Share on other sites More sharing options...
inmysights Posted December 25, 2015 Author Share Posted December 25, 2015 Thank you for the reply, yes, the console at the bottom, I get no errors.Thank you for the clearer mousclick, I did not notice you can do it like that.it does not work every time though, maybe after I hit f5 3-5 times , I would like to know why it does not work every single time.is there a way to debug it? Thank you Link to comment Share on other sites More sharing options...
InunoTaishou Posted December 26, 2015 Share Posted December 26, 2015 It's most likely caused by the very long Sleeps you use. Something you could do is to wrap your mouseclicks controled by an if statement that checks a variableexpandcollapse popup#include <AutoItConstants.au3> Global $clicking = False HotKeySet("{F5}", "_Click") While (True) Sleep(100) WEnd Func _Click() $clicking = Not $clicking If ($clicking) Then MouseClick("Left", 955, 250, 1,0) If (_InternalSleep(3000)) Then Return MouseClick("Left", 1237,711, 1,0) If (_InternalSleep(3000)) Then Return MouseClick("Left", 1680, 873, 1,0) If (_InternalSleep(3000)) Then Return MouseClick("Right") MouseClick("Right") MouseClick("Right") MouseClick("Right") If (_InternalSleep(2000)) Then Return ; Reset the control variable $clicking = False EndIf EndFunc Func _InternalSleep(Const ByRef $sleep_time) Local $internal_timer = TimerInit() While ($clicking and (TimerDiff($internal_timer) < $sleep_time)) ToolTip("_InternalSleep called | Sleep time = " & $sleep_time & " | Time Slept = " & Round(TimerDiff($internal_timer) / 1000, 2) & 's') Sleep(10) WEnd ToolTip("") If (Not $clicking) Then Return -1 Else Return 0 EndIf EndFuncA lot of people will do something like this for a while loop that can pause/unpause a script, just replaced If ($clicking) Then ... Endif with While ($clicking) ... Wend. It will execute the MouseClicks until you press the Hotkey again Link to comment Share on other sites More sharing options...
inmysights Posted December 26, 2015 Author Share Posted December 26, 2015 It's most likely caused by the very long Sleeps you use. Something you could do is to wrap your mouseclicks controled by an if statement that checks a variableexpandcollapse popup#include <AutoItConstants.au3> Global $clicking = False HotKeySet("{F5}", "_Click") While (True) Sleep(100) WEnd Func _Click() $clicking = Not $clicking If ($clicking) Then MouseClick("Left", 955, 250, 1,0) If (_InternalSleep(3000)) Then Return MouseClick("Left", 1237,711, 1,0) If (_InternalSleep(3000)) Then Return MouseClick("Left", 1680, 873, 1,0) If (_InternalSleep(3000)) Then Return MouseClick("Right") MouseClick("Right") MouseClick("Right") MouseClick("Right") If (_InternalSleep(2000)) Then Return ; Reset the control variable $clicking = False EndIf EndFunc Func _InternalSleep(Const ByRef $sleep_time) Local $internal_timer = TimerInit() While ($clicking and (TimerDiff($internal_timer) < $sleep_time)) ToolTip("_InternalSleep called | Sleep time = " & $sleep_time & " | Time Slept = " & Round(TimerDiff($internal_timer) / 1000, 2) & 's') Sleep(10) WEnd ToolTip("") If (Not $clicking) Then Return -1 Else Return 0 EndIf EndFuncA lot of people will do something like this for a while loop that can pause/unpause a script, just replaced If ($clicking) Then ... Endif with While ($clicking) ... Wend. It will execute the MouseClicks until you press the Hotkey againThis is great, works every time when I just run it, so how do I add this to a button and still execute it every time? Link to comment Share on other sites More sharing options...
InunoTaishou Posted December 26, 2015 Share Posted December 26, 2015 (edited) This is great, works every time when I just run it, so how do I add this to a button and still execute it every time?Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Planet1 _Click() EndSwitch Edited December 26, 2015 by InunoTaishou Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now