Advertisement
15Redstones

Circle autoclicker

Jan 11th, 2018
556
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;Coordinate conversion
  2. polar(OffX,OffY) {
  3.     Deg:=90/asin(1)*atan(OffY/OffX)
  4.     if(OffX<0) {
  5.         Deg+=180
  6.     }
  7.     if(Deg<0) {
  8.         Deg+=360
  9.     }
  10.     Return Deg
  11. }
  12.  
  13. cartesian(R,Deg,Xref,Yref) {
  14.     pX:=Xref+R*(cos(asin(1)/90*Deg))
  15.     pY:=Yref+R*(sin(asin(1)/90*Deg))
  16.     Return [pX,pY]
  17. }
  18.  
  19.  
  20. ;Clicks per degree / per pixel, always uses the one that results in less clicks
  21. CPD:=0.8
  22. CPP:=0.05
  23.  
  24. CoordMode, Mouse, Screen
  25. SetTitleMatchMode, 2
  26. RC:=[]
  27.  
  28.  
  29. ;Ctrl+Shift+Click to use tool, click three points and it will draw a semicircle through them
  30. +^LButton::
  31.     MouseGetPos, xpos, ypos
  32.     Coords:={"X":xpos,"Y":ypos}
  33.     RC.push(Coords)
  34.     if(RC.Length()>2) {
  35.         M1:=-(RC.2.X-RC.1.X)/(RC.2.Y-RC.1.Y)
  36.         C1:=(0.5*(RC.1.Y+RC.2.Y)-M1*0.5*(RC.1.X+RC.2.X))
  37.         M2:=-(RC.3.X-RC.2.X)/(RC.3.Y-RC.2.Y)
  38.         C2:=(0.5*(RC.2.Y+RC.3.Y)-M2*0.5*(RC.2.X+RC.3.X))
  39.         X:=((C2-C1)/(M1-M2))
  40.         Y:=(M1*X+C1)
  41.         R:=sqrt((RC.1.X-X)**(2)+(RC.1.Y-Y)**(2))
  42.         PC:=[polar(RC.1.X-X,RC.1.Y-Y),polar(RC.2.X-X,RC.2.Y-Y),polar(RC.3.X-X,RC.3.Y-Y)]
  43.         if(((90/asin(1)*atan(1/CPP/R))>(1/CPD))&&(CPP>0)) {
  44.             C:=(90/asin(1)*atan(1/CPP/R))
  45.         } else {
  46.             C:=1/CPD
  47.         }
  48.         if((PC.1<PC.2)&&(PC.2<PC.3)) {
  49.             S:=PC.1
  50.             E:=PC.3
  51.         }
  52.         if(((PC.1<PC.3)&&(PC.3<PC.2))||((PC.2<PC.1)&&(PC.1<PC.3))) {
  53.             S:=PC.3
  54.             E:=PC.1 +360
  55.         }
  56.         if(((PC.2<PC.3)&&(PC.3<PC.1))||((PC.3<PC.1)&&(PC.1<PC.2))) {
  57.             S:=PC.1
  58.             E:=PC.3 +360
  59.         }
  60.         if((PC.3<PC.2)&&(PC.2<PC.1)) {
  61.             S:=PC.3
  62.             E:=PC.1
  63.         }
  64.         Send, {Shift up} {Ctrl up}
  65.         While(S<E) {
  66.             cX:=cartesian(R,S,X,Y)[1]
  67.             cY:=cartesian(R,S,X,Y)[2]
  68.             Click, %cX%, %cY%
  69.             S += C
  70.         }
  71.        
  72.         RC:=[]
  73.     }
  74. Return
  75.  
  76. ;Ctrl+Shift+Escape to emergency shutoff in case it gets stuck
  77. +^Esc::
  78.     Msgbox, Exit
  79.     ExitApp
  80. Return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement