Post by Douglas Renato » 30 Nov 2021, 20:25
boa noite pessoal, tava tentando no forum gringo(por isso coloquei "portugues" pq ja tinha aberto um la) um script para andar de WASD com o mouse, baseado nas coordenatas.
eu seguraria um dos botoes laterais do mouse e ele andaria emulando o wasd, eu usaria esse script pra jogar MIR4 com uma mão só(o jogo é um port mequetrefe do mobile e nao da pra bindar nada no mouse nas configs do jogo).
seria extremamente conveniente, até achei um script quase perfeito aqui:
Code: Select all
; using-mouse-position-as-hotkey.ahk
; ver1.1 ... added 8-directions support.
; 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 := 1600
pixy := 900
basex := pixx/2
basey := pixy/2
return
tm_get_area:
get_area()
return
get_area() {
Global basex, basey
MouseGetPos, cx, cy
cur_degree := Atan((basey-cy)/(basex-cx)) * 180 / 3.141592653589793
if (cx >= basex) {
cur_degree360 := cur_degree + 90
} else {
cur_degree360 := cur_degree + 270
}
;ToolTip, degree: %cur_degree360%, basex, basey+20, 1
dx := (basex-cx)
dy := (basey-cy)
cur_area := get_area_id(cur_degree360)
ToolTip, Area: %cur_area%, basex, basey, 2
return cur_area
}
; area area degree total degree
;-------------------------------
; 1 50 50
; 12 20 70
; 2 40 110
; 23 20 130
; 3 100 230
; 34 20 250
; 4 40 290
; 41 20 310
; 1 50 360
get_area_id(degree) {
return degree < 50 ? 1
: degree < 70 ? 12
: degree < 110 ? 2
: degree < 130 ? 23
: degree < 230 ? 3
: degree < 250 ? 34
: degree < 290 ? 4
: degree < 310 ? 41
: 1 ; 310 to 360 degree
}
F1::
area := get_area()
if (area=1) {
key1=w
key2=
}
if (area=2) {
key1=d
key2=
}
if (area=3) {
key1=s
key2=
}
if (area=4) {
key1=a
key2=
}
if (area=12) {
key1=w
; Second key is d
key2=d
}
if (area=23) {
key1=d
; Second key is s
key2=s
}
if (area=34) {
key1=s
; Second key is a
key2=a
}
if (area=41) {
key1=a
; Second key is w
key2=w
}
; other changes??? ... need to proceed 2nd key.
; Release keys that were previous pressed
if (prevkey1 != key1) {
if (prevkey1) {
Send, {%prevkey1% Up}
}
prevkey1 := key1
}
if (prevkey2 != key2) {
if (prevkey2) {
Send, {%prevkey2% Up}
}
prevkey2 := key2
}
Send, {%key1% Down}
if (key2) {
Send, {%key2% Down}
}
return ; replece to Keywait, F1 if you need
F1 Up::
Send, {%prevkey1% Up}
if (prevkey2) {
Send, {%prevkey2% Up}
}
return
eu so precisaria que esse script não funcione baseado no centro da tela, mas sim que reset as coordenatas toda vez que eu segurar o botao novamente e inves de ter de segurar o F1, ser o botao lateral do mouse(botão avançar ou botão back).
se puderem me ajudar ficarei muito grato.
boa noite pessoal, tava tentando no forum gringo(por isso coloquei "portugues" pq ja tinha aberto um la) um script para andar de WASD com o mouse, baseado nas coordenatas.
eu seguraria um dos botoes laterais do mouse e ele andaria emulando o wasd, eu usaria esse script pra jogar MIR4 com uma mão só(o jogo é um port mequetrefe do mobile e nao da pra bindar nada no mouse nas configs do jogo).
seria extremamente conveniente, até achei um script quase perfeito aqui:
[code] ; using-mouse-position-as-hotkey.ahk
; ver1.1 ... added 8-directions support.
; 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 := 1600
pixy := 900
basex := pixx/2
basey := pixy/2
return
tm_get_area:
get_area()
return
get_area() {
Global basex, basey
MouseGetPos, cx, cy
cur_degree := Atan((basey-cy)/(basex-cx)) * 180 / 3.141592653589793
if (cx >= basex) {
cur_degree360 := cur_degree + 90
} else {
cur_degree360 := cur_degree + 270
}
;ToolTip, degree: %cur_degree360%, basex, basey+20, 1
dx := (basex-cx)
dy := (basey-cy)
cur_area := get_area_id(cur_degree360)
ToolTip, Area: %cur_area%, basex, basey, 2
return cur_area
}
; area area degree total degree
;-------------------------------
; 1 50 50
; 12 20 70
; 2 40 110
; 23 20 130
; 3 100 230
; 34 20 250
; 4 40 290
; 41 20 310
; 1 50 360
get_area_id(degree) {
return degree < 50 ? 1
: degree < 70 ? 12
: degree < 110 ? 2
: degree < 130 ? 23
: degree < 230 ? 3
: degree < 250 ? 34
: degree < 290 ? 4
: degree < 310 ? 41
: 1 ; 310 to 360 degree
}
F1::
area := get_area()
if (area=1) {
key1=w
key2=
}
if (area=2) {
key1=d
key2=
}
if (area=3) {
key1=s
key2=
}
if (area=4) {
key1=a
key2=
}
if (area=12) {
key1=w
; Second key is d
key2=d
}
if (area=23) {
key1=d
; Second key is s
key2=s
}
if (area=34) {
key1=s
; Second key is a
key2=a
}
if (area=41) {
key1=a
; Second key is w
key2=w
}
; other changes??? ... need to proceed 2nd key.
; Release keys that were previous pressed
if (prevkey1 != key1) {
if (prevkey1) {
Send, {%prevkey1% Up}
}
prevkey1 := key1
}
if (prevkey2 != key2) {
if (prevkey2) {
Send, {%prevkey2% Up}
}
prevkey2 := key2
}
Send, {%key1% Down}
if (key2) {
Send, {%key2% Down}
}
return ; replece to Keywait, F1 if you need
F1 Up::
Send, {%prevkey1% Up}
if (prevkey2) {
Send, {%prevkey2% Up}
}
return[/code]
eu so precisaria que esse script não funcione baseado no centro da tela, mas sim que reset as coordenatas toda vez que eu segurar o botao novamente e inves de ter de segurar o F1, ser o botao lateral do mouse(botão avançar ou botão back).
se puderem me ajudar ficarei muito grato.