Что нового

Аналог _IsPressed

zergood

Новичок
Сообщения
24
Репутация
1
Есть ли аналог или возможно проверить нажата ли кнопка, по мимо _IsPressed
У меня такая конструкция не работает
Код:
#include <Misc.au3>

While 1
    If _IsPressed("02") Then
	   Send("{SPACE}")
   ElseIf _IsPressed("1B") Then
        ExitLoop
    EndIf
    Sleep(200)
WEnd

Точнее сама конструкция рабочая. Я нажимаю ПКМ и нажимается 1 раз пробел. Суть в том, что это не работает в игре, скрипт тупа закрывается сразу же как я нажимаю ПКМ. Попробовал просто Send, сам сенд в игре отправляется, значит виновник именно _IsPressed
Как еще можно придумать данную конструкцию?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
В данном случае скрипт закроется если нажата ESC, возможно при ПКМ в игре также нажимается и ESC.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
А если попробовать сделать ПКМ при активированном текстовом поле игры, тоже закроется скрипт? Или попробовать заменить Send и ExitLoop на MsgBox, чтобы посмотреть что будет.
 
Автор
Z

zergood

Новичок
Сообщения
24
Репутация
1
Да, CreatoR, был прав
Это я так ступил на ровном месте. При сворачивании игры жал ESC+ALT и скрипт, соответственно, тоже закрывался. Причем я очень долго не мог понять в чем дело ;D
Всем спасибо)
Вот итоговый скрипт, может кому понадобится. Это спот (обнаружения врагов. нажимается Q когда я прицеливаюсь) для игры battlefield 3,4. В 4й батле всех лучше работает. Спотит только так))
Код:
$wnd = GUICreate("bf spotting (Q)", 170, 110, (@DesktopWidth - 310) / 2, (@DesktopHeight - 300) / 2, $WS_CAPTION)
$quit=GUICtrlCreateButton('Quit',110,85,50,20)
GUICtrlCreateLabel('delay pressing. ms:',10,10,90,20)
$delaypressing=GUICtrlCreateInput('50',120,7,40,20)
GUICtrlCreateLabel('repeat after. ms:',10,40,100,20)
$delayafter=GUICtrlCreateInput('200',120,37,40,20)
$info=GUICtrlCreateLabel(' key 9 start / 0 stop)',10,60,150,18,4096)

GUISetState()

While 1
$msg = GUIGetMsg()
 Select
   Case $msg = $GUI_EVENT_CLOSE
		 ExitLoop
   Case $msg=$quit
	     ExitLoop
   Case _IsPressed("39")
		 SoundPlay(@WindowsDir & "\media\Windows Hardware Insert.wav", 0)
	     GUICtrlSetData($info,' Running')
     	 main()
 EndSelect
WEnd

Func main()
While 1
    If _IsPressed("02") Then
	  	  Send('{q down}')
          Sleep(GUICtrlRead($delaypressing))
          Send('{q up}')
		  Sleep(GUICtrlRead($delayafter))
	   ElseIf _IsPressed("30") Then
		  GUICtrlSetData($info,' Stopped')
		  SoundPlay(@WindowsDir & "\media\Windows Hardware Remove.wav", 0)
        ExitLoop
	 EndIf
WEnd
EndFunc
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
[info border=#0000ff float=left]На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
package_old.gif
Тема не решена
[/info]
Если это предупреждение конечно актуально, а то у меня кнопка "Отметить решенной", куда-то пропала, так бы сам ткнул :smile:
 
Верх