приведенный ниже код является сценарием AHK, который я использовал. Это работает очень хорошо. По сути, он тянет за меня мышь, удерживая левую кнопку и левую кнопку мыши.

Проблема, которая у меня возникла, заключается в том, что мне нужно, чтобы курсор оставался полностью посередине. Игра, в которую я играю, делает так, чтобы при стрельбе (удерживая левую кнопку мыши) пистолет "качался" влево и вправо. К сожалению, я с треском провалился при каждой попытке включить это в мой сценарий ниже.

Может кто-нибудь, пожалуйста, помогите?

#NoEnv
SendMode Input

~F6::Suspend
~End::ExitApp
~F5::Reload

LCtrl & ~LButton::
Loop
If GetKeyState("LButton", "LCtrl") {
Sleep, 6
moveAmount := (moveAmount = 2) ? 1 : 0
mouseXY(moveAmount,7.5)

}
else
break

Return



mouseXY(x,y)
{
DllCall("mouse_event",int,1,int,x,int,y,uint,0,uint,0)
}

1 ответ1

0

Это уже третий раз, когда я отвечаю на вопрос относительно этого точного сценария.

Вероятно, кто бы это ни был автор сценария, просто скопируйте / вставьте части из других сценариев и наполовину заставили его работать.

Это выглядит как

moveAmount := (moveAmount = 2) ? 1 : 0

это попытка сделать что-то подобное.

что это делает это:

if(moveAmount == 2) {moveAmount:= 1} else {moveAmount:= 0}

Так как moveAmount не установлено в другом месте, оно никогда не может быть 2, следовательно, оно никогда не может быть 1, таким образом, оно всегда будет 0. следовательно, нет горизонтального движения.

если вы хотите чередовать взгляд вправо и влево, вы можете сделать что-то вроде этого:

moveAmount := (moveAmount == 2 ? -2 : 2)

Это установит 2 на первую итерацию, -2 на вторую, затем 2 на третью и т.д.

Что бы переместить его влево, а затем вправо, а затем влево и т.д.

Но я все еще чувствую, что moveAmount должен быть объявлен в некоторой части скрипта, которой больше нет.

Может быть, кто-то просто отказался от попыток определить, сколько движется оружие влево или вправо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .