1 (изменено: Arikurinkuto, 2013-03-18 22:53:39)

Тема: AHK:Помогите переписать и дополнить скрипт с AutoIt в AhK

Помогите пожалуйста переписать скрипт из AutoIt в AhK с добавлением нескольких функций. Вот собственно скрипт:


Func Shoot()
While 1
If _WinAPI_GetAsyncKeyState(0x02) = True Then
Local $coord = PixelSearch(682,377,683,411,0xFF0707)
If Not @error Then
MouseClick("Left")
Sleep(20)
EndIf
EndIf
WEnd
EndFunc

Нужно дописать чтобы функция и поиск выполнялись только нужном окне. Вот данные окна:


>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
APB Reloaded
ahk_class LaunchUnrealUWindowsClient

Поиск цвета выполнялся не по координатам а относительно центра окна ( от центра экрана горизонталь +1, -1. вертикаль +30, -30 пикселей.

Необходимо чтобы после клика ЛКМ курсор перемещался на один пиксель вниз от своего текущего места положения и после этого вставал на паузу на пол секунды.

И чтобы в середине была нарисована красная точка 0xFF0000, размерами относительно центра +3, -3, +3, -3

Пожалуйста надеюсь на помощь.

2

Re: AHK:Помогите переписать и дополнить скрипт с AutoIt в AhK

Помогите пожалуйста переписать скрипт из AutoIt в AhK

Shoot() {
    loop {
        if GetKeyState("RButton", "P") {
            PixelSearch x, y, 682, 377, 683, 411, 0xFF0707
            if !ErrorLevel {
                Click
                Sleep 20
            }
        }
    }
}

3

Re: AHK:Помогите переписать и дополнить скрипт с AutoIt в AhK

А в целом как оно должно выглядеть не подскажите? Изначально в AutoIt оно у меня выглядит так:


#include <WinAPIEx.au3>

If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)

HotKeySet("{F5}", "Pause")
HotKeySet("{F6}", "Exit")
Shoot()

Func Shoot()
While 1
If _WinAPI_GetAsyncKeyState(0x02) = True Then
Local $coord = PixelSearch(682,377,683,411,0xFF0707)
If Not @error Then
MouseClick("Left")
Sleep(20)
EndIf
EndIf
WEnd
EndFunc

While 1
$counter +=1
WEnd

Func Pause()
$Paused = NOT $Paused
While $Paused
sleep(100)
;ToolTip('Script is "Paused"',0,0, $counter, 1)
WEnd
ToolTip("")
EndFunc

Func Exit()
Exit 0
EndFunc

Но поддержки у AutoIt мало да и функции выполняются не так как хотелось бы.

4

Re: AHK:Помогите переписать и дополнить скрипт с AutoIt в AhK

Изначально в AutoIt оно у меня выглядит так

#SingleInstance force

~Rbutton::
    while GetKeyState("RButton", "P") {
        PixelSearch,,, 682, 377, 683, 411, 0xFF0707
        if !ErrorLevel {
            Click
            Sleep 20
        }
    }
    return

F5::Pause
F6::ExitApp

Но поддержки у AutoIt мало

Поддержка — это когда на форуме пишешь «сделайте мне скрипт» и его делают?

5

Re: AHK:Помогите переписать и дополнить скрипт с AutoIt в AhK

Нет. Это когда Находишь все необходимые функции и их значения, а как правильно собрать их вместе подсказать некому.

6

Re: AHK:Помогите переписать и дополнить скрипт с AutoIt в AhK

Чет нечего не работает... Это действительно так сложно все пишется? Большую часть необходимых команд даже гугл не находит. Например "Как найти центральные координаты активного окна" "Как сделать чтобы скрипт работал только в определенном окне" "Перемещение курсора относительно его текущего место положения" "Рисунок поверх активного окна"

Помогите мне найти необходимые команды, дальше я постараюсь сам.

7

Re: AHK:Помогите переписать и дополнить скрипт с AutoIt в AhK

Чет нечего не работает...

Всё работает.

Это действительно так сложно все пишется?

Всё пишется просто.

"Как найти центральные координаты активного окна"

Активное окно — прямоугольник. «Центральные координаты» это центр прямоугольника. Как найти координаты центра прямоугольника?

"Как сделать чтобы скрипт работал только в определенном окне"

Дайте однозначное определение понятию «работал».

"Перемещение курсора относительно его текущего место положения"

MouseMove 4-й параметр, будучи верно заданным, подразумевает, что переданные команде координаты — относительны текущему положению курсора.

дальше я постараюсь сам.

Ссылка на перевод официальной справки приведена выше. В папке с Autohotkey есть файл с расширением chm — актуальная версия справки на английском языке.

8 (изменено: Arikurinkuto, 2013-03-19 18:13:26)

Re: AHK:Помогите переписать и дополнить скрипт с AutoIt в AhK

Вот насчет прямоугольника то это понятно. Мне нужно чтобы поиск выполнялся не x/y x/y. а окно /2 по горизонтали и вертикали. И относительно этой точки выставлялись координаты: Горизонталь +1\-1 , Вертикаль +30\-30.

а По поводу определенного окна. Необходимо чтобы он вел все расчеты и действия только в окне "APB Reloaded" Команда вроде называется IfWinActive "APB Reloaded"

И вот хотелось бы узнать возможно ли нарисовать крестик или точку в середине этого окна?

9 (изменено: creature.ws, 2013-03-19 18:23:24)

Re: AHK:Помогите переписать и дополнить скрипт с AutoIt в AhK

Вот насчет прямоугольника то это понятно

Тогда мне нечего добавить.

Необходимо чтобы он вел все расчеты и действия только в окне

Непонятно.

Команда вроде называется IfWinActive

Эта команда в момент своего выполнения проверяет соответствует ли активное окно заданным в параметрах этой команды признакам, в случае истинности результата проверки выполняется блок команд, идущий после команды IfWinActive.
То, как работает эта команда не объясняет, что значит

чтобы скрипт работал только в определенном окне

10

Re: AHK:Помогите переписать и дополнить скрипт с AutoIt в AhK

Насчет прямоугольника остается только узнать как реализовать такой поиск. "Мне нужно чтобы поиск выполнялся не x/y x/y. а окно /2 по горизонтали и вертикали. И относительно этой точки выставлялись координаты: Горизонталь +1\-1 , Вертикаль +30\-30."

А в целом попробую донести свою мысль еще понятнее.

Есть окно название окна "APB Reloaded" размер этого окна может меняться 640x480 или 800x600 не важно, также окно может перемещаться по рабочему столу.
В центре этого окошка должен выполнятся поиск группы пикселей цвета FF0707, как только появляются в центре окна (Не рабочего стола) пиксель с таким цветом, происходит нажатие Левой кнопки мыши. Поиск цвета выполняется только когда в зажатом состоянии находится Правая кнопка мыши .

11

Re: AHK:Помогите переписать и дополнить скрипт с AutoIt в AhK

Конкретный вопрос. который вы задали — «как найти центральные координаты» окна.
Абсолютная x-координата центра окна равна сумме x-координаты левого вернего угла окна и половины ширины окна.
Относительная x-координата центра окна равна половине ширины окна. Аналогично с y-координатой.

12

Re: AHK:Помогите переписать и дополнить скрипт с AutoIt в AhK

А функция которая выполняет поиск по относительным координатам как называется. Ну вот в autoit это выполнялось при помощи такой строчки:

PixelSearch(@DesktopWidth/2-3,@DesktopHeight/2-3,@DesktopWidth/2+3,@DesktopHeight/2+3,0xFF0000,20) 

Но это выполнялось опять же относительно рабочего стола а не окна... Для окна эта строка поиска как должна выглядеть?

13 (изменено: creature.ws, 2013-03-19 22:48:06)

Re: AHK:Помогите переписать и дополнить скрипт с AutoIt в AhK

Координаты и размер окна определяются при помощи команды WinGetPos.