Untitled

mail@pastecode.io avatar
unknown
autohotkey
2 years ago
4.4 kB
1
Indexable
igalinti:=0
dalis:=360/8
dalispuse:=dalis/2

; Nustatykite slenkstį pelės judesiui
threshold := 3
dalis:=360/8
dalispuse:=dalis/2
; Nustatykite klavišų pasikartojimo delsą ir greitį
SetKeyDelay, 0, 50


; Sekite dabartinę pelės poziciją
MouseGetPos, currentX, currentY, R

; Ciklas be galo
Loop
{
    ; Gaukite naują pelės poziciją
    MouseGetPos, newX, newY, R
    
    ; Apskaičiuokite skirtumą tarp pelės pozicijų
    deltaX := newX - currentX
    deltaY := newY - currentY
    
    ; Patikrinkite ar pelė pasislinko daugiau nei slenkstis
    p:=-1
    if (!deltaX=0 or !deltaY=0)
        p:=kampas(newX, newY, currentX, currentY)
    if (GetKeyState("Left") and deltaX)>-threshold
	    SendInput {Left up}
    if (GetKeyState("Right") and deltaX)<threshold
	    SendInput {Right up}
    if (GetKeyState("Up") and deltaY)>-threshold
	    SendInput {Up up}
    if (GetKeyState("Down") and deltaY)<threshold
	    SendInput {Down up}
    if (p<=dalispuse and p>-1)
    {
        if GetKeyState("Left")
	        SendInput {Left up}
        if GetKeyState("Up")
	        SendInput {Up up}
	if GetKeyState("Down")
	    SendInput {Down up}
	if (deltaX>=threshold and !GetKeyState("Right"))
	    SendInput {Right down}
			
    }
    if (p>=180-dalispuse)
    {
        if GetKeyState("Right")
	        SendInput {Right up}
        if GetKeyState("Up")
	        SendInput {Up up}
	if GetKeyState("Down")
	    SendInput {Down up}
	if (deltaX<=-threshold and !GetKeyState("Left"))
	    SendInput {Left down}		
    }

    if (p>=90-dalispuse and p<=90+dalispuse)
    {
        if GetKeyState("Left")
	        SendInput {Left up}
	    if GetKeyState("Right")
	        SendInput {Right up}
	if (deltaY<=-threshold)
	{
	    if GetKeyState("Down")
	        SendInput {Down up}
        if !GetKeyState("Up")
	        SendInput {Up down}
				
	}
	if (deltaY>=threshold)
	{
	    if GetKeyState("Up")
	        SendInput {Up up}
        if !GetKeyState("Down")
	        SendInput {Down down}
				
	}
    }

    if (p<180-dalispuse and p>90+dalispuse)
    {
        if (deltaY<=-threshold)
	{
	    if GetKeyState("Right")
	        SendInput {Right up}
	    if GetKeyState("Down")
	        SendInput {Down up}
	    
	    if (deltaX<=-threshold and !GetKeyState("Left"))
	        SendInput {Left down}
	}
	if (deltaY>=threshold)
	{
	    if GetKeyState("Right")
	        SendInput {Right up}
	    if GetKeyState("Up")
		    SendInput {Up up}
	    if (deltaX<=-threshold and !GetKeyState("Left"))
		    SendInput {Left down}				
	}
    }
    if (p>dalispuse and p<90-dalispuse)
    {
        if (deltaY<=-threshold)
	{
	    if GetKeyState("Left")
	        SendInput {Left up}
	    if GetKeyState("Down")
	        SendInput {Down up}
	    if (deltaX>=threshold and !GetKeyState("Right"))
		    SendInput {Right down}
				
					
	}
	if (deltaY>=threshold)
	{
	    if GetKeyState("Left")
	        SendInput {Left up}
	    if GetKeyState("Up")
	        SendInput {Up up}
	    if (deltaX>=threshold and !GetKeyState("Right"))
	        SendInput {Right down}
					
	}
			
			
    }
    
    ; Atnaujinkite dabartinę pelės poziciją
    currentX := newX
    currentY := newY
    WinGetTitle, Title, A
    ; Patikrinkite ar pelė pasiekė žaidimo lango kraštą ir perkelti ją į žaidimo lango vidurį
    WinGetPos, X, Y, Width, Height, %Title%
    
    if (currentX <= 0 or currentX >= Width-threshold or currentY <= 0 or currentY >= Height-threshold)
    {
        currentX := Width / 2
        currentY := Height / 2
        MouseMove, currentX, currentY
        
        ; Išjunkite rodyklių klavišus kai pelė yra perkelta į ekrano vidurį
        ;SendInput {Right up}
        ;SendInput {Left up}
        ;SendInput {Down up}
        ;SendInput {Up up}
    }
    
    ; Miegokite trumpam laikui sumažinti CPU naudojimą
    Sleep 10
}



; Išleiskite visus klavišus kai script'as išeina
OnExit:
SendInput {Right up}
SendInput {Left up}
SendInput {Down up}
SendInput {Up up}
ExitApp
kampas(x2, y2, vidurysx, vidurysy)
{
	pi:=4*ATan(1)
	x1:=vidurysx
	y1:=0
	x2:=x2-vidurysx
	y2:=vidurysy-y2
	m:=Acos((x1*x2+y1*y2)/(Sqrt(x1*x1+y1*y1)*Sqrt(x2*x2+y2*y2)))*180/pi

	
	return m
}