Mausbewegung statt Pfeiltasten verwenden Topic is solved

Stelle Fragen zur Automatisierung von Spielen

Moderator: jNizM

WallE92
Posts: 4
Joined: 26 Apr 2021, 06:47

Mausbewegung statt Pfeiltasten verwenden  Topic is solved

Post by WallE92 » 26 Apr 2021, 07:07

Hallo :wave:

ich bräuchte eure Hilfe und zwar würde ich beim Zocken gerne die Mausbewegung statt den Pfeiltasten verwenden können, also dass die Maus als eine Art Joystick fungiert.

Habt ihr eine Idee, ob bzw. wie man das in AHK umsetzen könnte.

Bin für jeden Tipp dankbar!

User avatar
SYnCR
Posts: 9
Joined: 25 Apr 2018, 02:32
Contact:

Re: Mausbewegung statt Pfeiltasten verwenden

Post by SYnCR » 26 Apr 2021, 07:40

WallE92 wrote:
26 Apr 2021, 07:07
Hallo :wave:

ich bräuchte eure Hilfe und zwar würde ich beim Zocken gerne die Mausbewegung statt den Pfeiltasten verwenden können, also dass die Maus als eine Art Joystick fungiert.

Habt ihr eine Idee, ob bzw. wie man das in AHK umsetzen könnte.

Bin für jeden Tipp dankbar!
Hey - WallE92,

konnte es jetzt nicht testen - aber müsste so in der Art funktionieren.

Code: Select all

repeat(keys, delay := 80) {
	send % keys
	sleep % delay
}

loop {
	mousegetpos _x,_y
	wingetpos ,,,_w,_h
	while (_x * _y < 1250)
		repeat("{left}{up}")
	while (_x < 25) && (_y > (_h - 25))
		repeat("{left}{down}")
	while (_x > (_w - 25)) && (_y < 50)
		repeat("{right}{up}")
	while (_x > (_w - 25)) && (_y > (_h - 25))
		repeat("{right}{down}")
	while (_x < 25)
		repeat("{left}")
	while (_x > (_w - 25))
		repeat("{right}")
	while (_y < 50)
		repeat("{up}")
	while (_y > (_h - 25))
		repeat("{down}")
	sleep 200
}

WallE92
Posts: 4
Joined: 26 Apr 2021, 06:47

Re: Mausbewegung statt Pfeiltasten verwenden

Post by WallE92 » 26 Apr 2021, 12:35

SYnCR wrote:
26 Apr 2021, 07:40
WallE92 wrote:
26 Apr 2021, 07:07
Hallo :wave:

ich bräuchte eure Hilfe und zwar würde ich beim Zocken gerne die Mausbewegung statt den Pfeiltasten verwenden können, also dass die Maus als eine Art Joystick fungiert.

Habt ihr eine Idee, ob bzw. wie man das in AHK umsetzen könnte.

Bin für jeden Tipp dankbar!
Hey - WallE92,

konnte es jetzt nicht testen - aber müsste so in der Art funktionieren.

Code: Select all

repeat(keys, delay := 80) {
	send % keys
	sleep % delay
}

loop {
	mousegetpos _x,_y
	wingetpos ,,,_w,_h
	while (_x * _y < 1250)
		repeat("{left}{up}")
	while (_x < 25) && (_y > (_h - 25))
		repeat("{left}{down}")
	while (_x > (_w - 25)) && (_y < 50)
		repeat("{right}{up}")
	while (_x > (_w - 25)) && (_y > (_h - 25))
		repeat("{right}{down}")
	while (_x < 25)
		repeat("{left}")
	while (_x > (_w - 25))
		repeat("{right}")
	while (_y < 50)
		repeat("{up}")
	while (_y > (_h - 25))
		repeat("{down}")
	sleep 200
}
Erstmal vielen lieben Dank, dass für die Hilfe! Muss gesehen, hab zwar schon paar AHK Scripts geschrieben, aber für mich ist der Code trotzdem chinesisch. Momentan wird bei einem Mausklick eine Endlosschleife ausgelöst und die Taste {down} kriegt solange einen Impuls, bis es nicht weiter runter geht oder man das Script killt.
Allerdings reagiert es leider noch gar nicht auf meine Mausbewegung. Ne Idee woran das liegen könnte?
Danke!

User avatar
SYnCR
Posts: 9
Joined: 25 Apr 2018, 02:32
Contact:

Re: Mausbewegung statt Pfeiltasten verwenden

Post by SYnCR » 27 Apr 2021, 01:05

WallE92 wrote:
26 Apr 2021, 12:35
SYnCR wrote:
26 Apr 2021, 07:40
WallE92 wrote:
26 Apr 2021, 07:07
Hallo :wave:

ich bräuchte eure Hilfe und zwar würde ich beim Zocken gerne die Mausbewegung statt den Pfeiltasten verwenden können, also dass die Maus als eine Art Joystick fungiert.

Habt ihr eine Idee, ob bzw. wie man das in AHK umsetzen könnte.

Bin für jeden Tipp dankbar!
Hey - WallE92,

konnte es jetzt nicht testen - aber müsste so in der Art funktionieren.

Code: Select all

repeat(keys, delay := 80) {
	send % keys
	sleep % delay
}

loop {
	mousegetpos _x,_y
	wingetpos ,,,_w,_h
	while (_x * _y < 1250)
		repeat("{left}{up}")
	while (_x < 25) && (_y > (_h - 25))
		repeat("{left}{down}")
	while (_x > (_w - 25)) && (_y < 50)
		repeat("{right}{up}")
	while (_x > (_w - 25)) && (_y > (_h - 25))
		repeat("{right}{down}")
	while (_x < 25)
		repeat("{left}")
	while (_x > (_w - 25))
		repeat("{right}")
	while (_y < 50)
		repeat("{up}")
	while (_y > (_h - 25))
		repeat("{down}")
	sleep 200
}
Erstmal vielen lieben Dank, dass für die Hilfe! Muss gesehen, hab zwar schon paar AHK Scripts geschrieben, aber für mich ist der Code trotzdem chinesisch. Momentan wird bei einem Mausklick eine Endlosschleife ausgelöst und die Taste {down} kriegt solange einen Impuls, bis es nicht weiter runter geht oder man das Script killt.
Allerdings reagiert es leider noch gar nicht auf meine Mausbewegung. Ne Idee woran das liegen könnte?
Danke!

hallo WallE92,

habe gestern das mal kurz mit diablo3 getestet.
Ist jetzt auf Full-HD Rez eingestellt.

Die Maus wird in 4 Bereiche des Monitors getrackt und je nach Bereich wird beim halten der F1-Taste (WASD) repeatet.

Hoffe das hilft dir.
MFG SYnCR

Code: Select all

; get current mouse area and send correspond key
; press F1 and move mouse

CoordMode, Mouse, Screen
CoordMode, ToolTip, Screen

; for debug
SetTimer, tm_get_area, 100

; center position define(memo: my machine is 1920/1080)
pixx := 1920
pixy := 1080
basex := pixx/2
basey := pixy/2
return

tm_get_area:
    get_area()
return

get_area() {
    Global basex, basey

    MouseGetPos, cx, cy
    cur_rad := Atan((basey-cy)/(basex-cx)) * 180 / 3.141592653589793
    if (cx >= basex) {
        cur_rad360 := cur_rad + 90
    } else {
        cur_rad360 := cur_rad + 270
    }
;    ToolTip, %cur_rad360%, basex, basey+20, 1

    dx := (basex-cx)
    dy := (basey-cy)
    cur_area := get_area_id(cur_rad360)
    ToolTip, Area: %cur_area%, basex, basey, 2
    return cur_area
}

get_area_id(rad) {
    if (rad < 60) {
        return 1
    }
    if (rad < 120) {
        return 2
    }
    if (rad < 240) {
        return 3
    }
    if (rad < 300) {
        return 4
    }
    return 1
}

F1:: ; <-- fixed
    area := get_area()
    if (area=1)
        key=w
    if (area=2)
        key=d
    if (area=3)
        key=s
    if (area=4)
        key=a
    Send, {%key% Down}
    ; Release key previous pressed
    if (prevkey != key) {
        Send, {%prevkey% Up}
        prevkey := key
    }
return

F1 Up::
    Send, {%prevkey% Up}
return
[Mod edit: quote tags replaced with [code][/code] tags.]

Rohwedder
Posts: 7616
Joined: 04 Jun 2014, 08:33
Location: Germany

Re: Mausbewegung statt Pfeiltasten verwenden

Post by Rohwedder » 27 Apr 2021, 06:46

Hallo,
entweder die jeweilige Taste nur kurz drücken:

Code: Select all

#Persistent
SetTimer, Maus, 100
Maus:
MouseGetPos, X1, Y1
IF Abs(DX:=X1-X2) >= Abs(DY:=Y1-Y2)
	Send,% DX? DX>0? "d":"a":
Else
	Send,% DY>0? "s":"w"
X2 := X1, Y2 := Y1
Return
oder gedrückt halten:

Code: Select all

#Persistent
SetTimer, Maus, 100
Maus:
MouseGetPos, X1, Y1
IF Abs(DX:=X1-X2) >= Abs(DY:=Y1-Y2)
	UpDown(DX? DX>0? "d":"a":)
Else
	UpDown(DY>0? "s":"w")
X2 := X1, Y2 := Y1
Return
UpDown(Key2)
{
	static Key1
	IF (Key2 <> Key1)
	{
		Send, {%Key1% up}{%Key2% down}
		Key1 := Key2
	}
}

WallE92
Posts: 4
Joined: 26 Apr 2021, 06:47

Re: Mausbewegung statt Pfeiltasten verwenden

Post by WallE92 » 27 Apr 2021, 11:42

SYnCR wrote:
27 Apr 2021, 01:05
WallE92 wrote:
26 Apr 2021, 12:35
SYnCR wrote:
26 Apr 2021, 07:40
WallE92 wrote:
26 Apr 2021, 07:07
Hallo :wave:

ich bräuchte eure Hilfe und zwar würde ich beim Zocken gerne die Mausbewegung statt den Pfeiltasten verwenden können, also dass die Maus als eine Art Joystick fungiert.

Habt ihr eine Idee, ob bzw. wie man das in AHK umsetzen könnte.

Bin für jeden Tipp dankbar!
Hey - WallE92,

konnte es jetzt nicht testen - aber müsste so in der Art funktionieren.

Code: Select all

repeat(keys, delay := 80) {
	send % keys
	sleep % delay
}

loop {
	mousegetpos _x,_y
	wingetpos ,,,_w,_h
	while (_x * _y < 1250)
		repeat("{left}{up}")
	while (_x < 25) && (_y > (_h - 25))
		repeat("{left}{down}")
	while (_x > (_w - 25)) && (_y < 50)
		repeat("{right}{up}")
	while (_x > (_w - 25)) && (_y > (_h - 25))
		repeat("{right}{down}")
	while (_x < 25)
		repeat("{left}")
	while (_x > (_w - 25))
		repeat("{right}")
	while (_y < 50)
		repeat("{up}")
	while (_y > (_h - 25))
		repeat("{down}")
	sleep 200
}
Erstmal vielen lieben Dank, dass für die Hilfe! Muss gesehen, hab zwar schon paar AHK Scripts geschrieben, aber für mich ist der Code trotzdem chinesisch. Momentan wird bei einem Mausklick eine Endlosschleife ausgelöst und die Taste {down} kriegt solange einen Impuls, bis es nicht weiter runter geht oder man das Script killt.
Allerdings reagiert es leider noch gar nicht auf meine Mausbewegung. Ne Idee woran das liegen könnte?
Danke!

hallo WallE92,

habe gestern das mal kurz mit diablo3 getestet.
Ist jetzt auf Full-HD Rez eingestellt.

Die Maus wird in 4 Bereiche des Monitors getrackt und je nach Bereich wird beim halten der F1-Taste (WASD) repeatet.

Hoffe das hilft dir.
MFG SYnCR

Code: Select all

; get current mouse area and send correspond key
; press F1 and move mouse

CoordMode, Mouse, Screen
CoordMode, ToolTip, Screen

; for debug
SetTimer, tm_get_area, 100

; center position define(memo: my machine is 1920/1080)
pixx := 1920
pixy := 1080
basex := pixx/2
basey := pixy/2
return

tm_get_area:
    get_area()
return

get_area() {
    Global basex, basey

    MouseGetPos, cx, cy
    cur_rad := Atan((basey-cy)/(basex-cx)) * 180 / 3.141592653589793
    if (cx >= basex) {
        cur_rad360 := cur_rad + 90
    } else {
        cur_rad360 := cur_rad + 270
    }
;    ToolTip, %cur_rad360%, basex, basey+20, 1

    dx := (basex-cx)
    dy := (basey-cy)
    cur_area := get_area_id(cur_rad360)
    ToolTip, Area: %cur_area%, basex, basey, 2
    return cur_area
}

get_area_id(rad) {
    if (rad < 60) {
        return 1
    }
    if (rad < 120) {
        return 2
    }
    if (rad < 240) {
        return 3
    }
    if (rad < 300) {
        return 4
    }
    return 1
}

F1:: ; <-- fixed
    area := get_area()
    if (area=1)
        key=w
    if (area=2)
        key=d
    if (area=3)
        key=s
    if (area=4)
        key=a
    Send, {%key% Down}
    ; Release key previous pressed
    if (prevkey != key) {
        Send, {%prevkey% Up}
        prevkey := key
    }
return

F1 Up::
    Send, {%prevkey% Up}
return
[Mod edit: quote tags replaced with [code][/code] tags.]

Es klappt! Vielen lieben Dank! :twisted: Hab den F1-Befehl jetzt noch in einen Loop gepackt.
Jetzt müsst ich nur noch fahren können damit... :think:

Post Reply

Return to “Spiele”