Здравствуйте, Уважаемые форумчане!
Занимаюсь скриптом на рыбалку в Блек Дезерт, и на одном компе скрипт работает исправно (на рабочем ноуте). Захотел поставить скрипт на домашнюю машину-беда. не эмулирует клавиши. И там и там стоит W7 x64. UAC отключил. Autoit одинаковой версии (последний) запускается с правами админа, игра запускается правами админа.
Итак. Есть задача нажимать R, а затем пробел при распознавании определенного пиксела. Скрипт выглядит так
Как видите, скрипт проще некуда. Проблема в том, что скрипт не прожимает R, а так же любые другие клавиши на клавиатуре, кроме пробела, контрола и т.д.
Интересный факт: в игру скрипт отправляет, или пытается отправлять R, я это понял, когда внутри игры открыл чат. В чат проходили и пробел и R, однако кроме как в чат ничего не идет.
Уважаемые форумчане! Пожалуйста, дайте наводку, куда можно мыслить?
Занимаюсь скриптом на рыбалку в Блек Дезерт, и на одном компе скрипт работает исправно (на рабочем ноуте). Захотел поставить скрипт на домашнюю машину-беда. не эмулирует клавиши. И там и там стоит W7 x64. UAC отключил. Autoit одинаковой версии (последний) запускается с правами админа, игра запускается правами админа.
Итак. Есть задача нажимать R, а затем пробел при распознавании определенного пиксела. Скрипт выглядит так
Код:
#RequireAdmin
;Press Esc to terminate script, Pause/Break to "pause"
#include <AutoItConstants.au3>
Opt("SendKeyDownDelay", 55)
HotKeySet("{PAUSE}", "TogglePause")
$dll = DllOpen("user32.dll")
AutoItSetOption("CaretCoordMode", 1)
AutoItSetOption("MouseCoordMode", 1)
AutoItSetOption("PixelCoordMode", 1)
$gap = 49
$stick = 0
;;;; Body of program would go here;;;;
Sleep(3000)
While 1
$aCoord = PixelSearch(1521, 134, 1531, 142, 0xEB0000, 12, 1)
If not @error Then
;TrayTip("t", "FOUND RED", 2000)
Send("i")
Sleep(2000)
If($stick<=8) Then
;TrayTip("t", $stick & " ANOTHER STICK MOUSE MOVE", 2000)
MouseMove(1530+($gap*$stick), 350)
Sleep(1000)
MouseDown($MOUSE_CLICK_RIGHT)
Sleep(100)
MouseUp($MOUSE_CLICK_RIGHT)
Sleep(1000)
$stick = $stick + 1
;TrayTip("t", $stick & "new STICK MOUSE MOVE", 2000)
EndIf
Send("i")
Sleep(2000)
EndIf
$aCoord = PixelSearch(961, 190, 965, 195, 0xD6EFFE, 10, 1)
If not @error Then
;TrayTip("t", "NO SLOT", 1000)
Sleep(1000+Random(0, 80, 1))
Send("{SPACE}")
Sleep(1000+Random(0, 80, 1))
EndIf
$aCoord = PixelSearch(967, 227, 973, 234, 0xC4BEBE, 10, 1)
If not @error Then
TrayTip("t", "pressed R", 2000)
Sleep(1000+Random(0, 80, 1))
Send("r")
Sleep(1000+Random(0, 80, 1))
Send("{SPACE} ")
Sleep(6000+Random(0, 80, 1))
EndIf
Sleep(10)
WEnd
;;;;;;;;
Func IsPressed($hexKey)
Local $aR, $bO
$hexKey = '0x' & $hexKey
$aR = DllCall("user32", "int", "GetAsyncKeyState", "int", $hexKey)
If Not @error And BitAND($aR[0], 0x8000) = 0x8000 Then
$bO = 1
Else
$bO = 0
EndIf
Return $bO
EndFunc ;==>_IsPressed
Func TogglePause()
$Paused = NOT $Paused
While $Paused
WEnd
EndFunc
Как видите, скрипт проще некуда. Проблема в том, что скрипт не прожимает R, а так же любые другие клавиши на клавиатуре, кроме пробела, контрола и т.д.
Интересный факт: в игру скрипт отправляет, или пытается отправлять R, я это понял, когда внутри игры открыл чат. В чат проходили и пробел и R, однако кроме как в чат ничего не идет.
Уважаемые форумчане! Пожалуйста, дайте наводку, куда можно мыслить?