Advertisement
Guest User

Untitled

a guest
Aug 2nd, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;Non-Intrusive Autoclicker, by Shadowspaz
  2. ;v2.1.1
  3.  
  4. #InstallKeybdHook
  5. #SingleInstance, Force
  6. DetectHiddenWindows, on
  7. SetControlDelay -1
  8. SetBatchLines -1
  9. Thread, Interrupt, 0
  10. SetFormat, float, 0.0
  11.  
  12. toggle := false
  13. inputPresent := false
  14. mouseMoved := false
  15. settingPoints := false
  16.  
  17. clickRate := 20
  18. Mode := 0
  19. pmx := 0
  20. pmy := 0
  21.  
  22. totalClicks := 1
  23. currentClick := 1
  24.  
  25. TempRateCPS := 50
  26. TempRateSPC := 1
  27.  
  28. setTimer, checkMouseMovement, 10
  29.  
  30. setTimer, setTip, 5
  31. TTStart = %A_TickCount%
  32. while (A_TickCount - TTStart < 5000 && !toggle)
  33. {
  34.   TooltipMsg = Press (Alt + Backspace) to toggle autoclicker `n Press (Alt + Dash(-)) for options
  35. }
  36.   TooltipMsg =
  37.  
  38. !-::
  39.   IfWinNotExist, NIAC Settings
  40.   {
  41.     if settingPoints
  42.     {
  43.       toggle := false
  44.       settingPoints := false
  45.       actWin :=
  46.       TooltipMsg =
  47.     }
  48.  
  49.     prevTC := totalClicks
  50.  
  51.     Gui, Show, w210 h160, NIAC Settings
  52.     Gui, Add, Radio, x25 y10 gActEdit1 vmode, Clicks per second:
  53.    Gui, Add, Radio, x25 y35 gActEdit2, Seconds per click:
  54.     Gui, Add, Edit, x135 y8 w50 Number Left vtempRateCPS, % tempRateCPS
  55.     Gui, Add, Edit, x135 y33 w50 Number Left vtempRateSPC, % tempRateSPC
  56.     Gui, Add, Text, x30 y65, Total click locations:
  57.    Gui, Add, Edit, x133 y63 w50 Number Left vtotalClicks, % totalClicks
  58.     Gui, Add, Text, x0 w210 0x10
  59.     Gui, Add, Text, x27 y100, (Default is 50 clicks per second)
  60.     Gui, Add, Button, x60 y117 gReset, Reset
  61.     Gui, Add, Button, x112 y117 Default gSetVal, Set
  62.     Gui, Font, s6
  63.     Gui, Add, Text, x188 y151, v2.1.1
  64.     if mode < 2
  65.     {
  66.       GuiControl,, Mode, 1
  67.       GoSub, ActEdit1
  68.     }
  69.     else
  70.     {
  71.       GuiControl,, Seconds per click:, 1
  72.       GoSub, ActEdit2
  73.     }
  74.   }
  75.   else
  76.     WinActivate, NIAC Settings
  77. return
  78.  
  79. ActEdit1:
  80.  GuiControl, Enable, tempRateCPS
  81.   GuiControl, Disable, tempRateSPC
  82.   GuiControl, Focus, tempRateCPS
  83.   Send +{End}
  84. return
  85.  
  86. ActEdit2:
  87.  GuiControl, Enable, tempRateSPC
  88.   GuiControl, Disable, tempRateCPS
  89.   GuiControl, Focus, tempRateSPC
  90.   Send +{End}
  91. return
  92.  
  93. Reset:
  94.  toggle := false
  95.   actWin :=
  96.   setTimer, autoClick, off
  97.   currentClick := 1
  98.   GuiControl, Disable, Reset
  99.   Gui, Font, s8
  100.   Gui, Add, Text, x54 y145, Click locations reset.
  101. return
  102.  
  103. SetVal:
  104.  Gui, Submit
  105.   if mode < 2
  106.     clickRate := tempRateCPS > 0 ? 1000 / tempRateCPS : 1000
  107.   else
  108.     clickRate := tempRateSPC > 0 ? 1000 * tempRateSPC : 1000
  109.   if totalClicks != %prevTC%
  110.   {
  111.     toggle := false
  112.     actWin :=
  113.     setTimer, autoClick, off
  114.   }
  115. GuiClose:
  116.   if toggle
  117.   {
  118.     EmptyMem()
  119.     setTimer, autoclick, %clickRate%
  120.   }
  121.   Gui, Destroy
  122. return
  123.  
  124. !Backspace::
  125.  
  126.   IfWinNotExist, NIAC Settings ; Only functional if options window is not open
  127.   {
  128.     toggle := !toggle
  129.     if toggle
  130.     {
  131.       setTimer, setTip, 5
  132.       if (!actWin) ; actWin value is also used to determine if checks are set. If they aren't:
  133.       {
  134.         settingPoints := true ; Used to allow break if options are opened
  135.         Loop, %totalClicks%
  136.         {
  137.           if totalClicks < 2
  138.             TooltipMsg = Click the desired autoclick location.
  139.           else
  140.             TooltipMsg = Click the location for point %A_Index%.
  141.           toggle := false
  142.           Keywait, RButton, D
  143.           Keywait, RButton
  144.           if !settingPoints ; Opening options sets this to false, breaking the loop
  145.             return
  146.           TooltipMsg =
  147.           newIndex := A_Index - 1
  148.           MouseGetPos, xp%newIndex%, yp%newIndex%
  149.           WinGet, actWin, ID, A
  150.         }
  151.         settingPoints := false
  152.       }
  153.       else ; If values ARE set (actWin contains data):
  154.       {
  155.         settingPoints := false
  156.         setTimer, setTip, 5
  157.         TTStart = %A_TickCount%
  158.         TooltipMsg = ##Autoclick enabled.
  159.       }
  160.       toggle := true
  161.       EmptyMem()
  162.       setTimer, autoclick, %clickRate%
  163.     }
  164.     else
  165.     {
  166.        setTimer, setTip, 5
  167.        TTStart = %A_TickCount%
  168.        TooltipMsg = ##Autoclick disabled.
  169.        setTimer, autoclick, off
  170.     }
  171.   }
  172. return
  173.  
  174. setTip:
  175.  StringReplace, cleanTTM, TooltipMsg, ##
  176.   Tooltip, % cleanTTM
  177.   if (InStr(TooltipMsg, "##") && A_TickCount - TTStart > 1000)
  178.     TooltipMsg =
  179.   if TooltipMsg =
  180.   {
  181.     Tooltip
  182.     setTimer, setTip, off
  183.   }
  184. return
  185.  
  186. checkMouseMovement:
  187.  if (WinExist("ahk_id" . actWin) || !actWin) ; If NIAC is clicking in a window, or the window isn't set, it's all good.
  188.   {
  189.     MouseGetPos, tx, ty
  190.     if (tx == pmx && ty == pmy)
  191.       mouseMoved := false
  192.     else
  193.       mouseMoved := true
  194.     pmx := tx
  195.     pmy := ty
  196.   }
  197.   else ; Otherwise, the target window has been closed.
  198.   {
  199.     Msgbox, 4, NIAC, Target window has been closed, `n Do you want to close NIAutoclicker as well?
  200.     IfMsgBox Yes
  201.       ExitApp
  202.     else
  203.     {
  204.       actWin :=
  205.       toggle := false
  206.     }
  207.   }
  208. return
  209.  
  210. autoclick:
  211.  if !(WinActive("ahk_id" . actWin) && (A_TimeIdlePhysical < 50 && !mouseMoved))
  212.   {
  213.     cx := xp%currentClick%
  214.     cy := yp%currentClick%
  215.     ControlClick, x%cx% y%cy%, ahk_id %actWin%,,,, NA
  216.     currentClick := % Mod(currentClick + 1, totalClicks)
  217.   }
  218. return
  219.  
  220. ~*LButton up::
  221. return
  222.  
  223. #If WinActive("ahk_id" . actWin) && toggle
  224. $~*LButton::
  225.   MouseGetPos,,, winClick
  226.   if winClick = %actWin%
  227.     setTimer, autoclick, off
  228.   Send {Blind}{LButton Down}
  229. return
  230.  
  231. $~*LButton up::
  232.   IfWinNotExist, NIAC Settings
  233.     setTimer, autoclick, %clickRate%
  234.   Send {Blind}{LButton Up}
  235. return
  236.  
  237. EmptyMem()
  238. {
  239.   pid:= DllCall("GetCurrentProcessId")
  240.   h:=DllCall("OpenProcess", "UInt", 0x001F0FFF, "Int", 0, "Int", pid)
  241.   DllCall("SetProcessWorkingSetSize", "UInt", h, "Int", -1, "Int", -1)
  242.   DllCall("CloseHandle", "Int", h)
  243. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement