Что нового

Цикл - распознать число, нажать кнопку, 4-5 раз кликнуть.

NuclearBeer

Новичок
Сообщения
32
Репутация
0
Версия AutoIt: мне все равно, какой скажешь такой поставлю

Описание: маленький кликер с расчетной задержкой между кликами


Как я это вижу -

____________________________________________________________________________________

если 5-тая кнопка миши зажата, то начать "внешний цикл", если не зажата, то подожать 100мс и повторить проверку


внешний цикл:

- идентифицировать число в полноэкранном окне игры, которое состоит из 3 цифр с точкой (число будет от 0.60 до 5.00, пример - 1.77), число находится в прямоугольнике х-580; у-1035 х-610; y-1055, цвет желтий;

- Х = " идентифицированое число";

- Т1 (округлить до целого) = 1000 / х * 0,25 + 1;

- Т2 (округлить до целого) = 1000 / х * 0,75 / 5 + 1;

- нажимаем кнопку - "S", на клавиатуре;

- ждем 0.5 * Т1;

- отпускаем кнопку - "S";

- ждем 0.5 * Т1;

внутрений цикл, который надо пройти 5 раз:

- нажимаем ЛКМ

- ждем 0,5 * Т2

- отпускаем ЛКМ

- ждем 0,5 * Т2

конец внутреннегоего цикла;

конец внешнего цикла.

____________________________________________________________________________________



Примечания: Работа для среднего пользователя на 10-15мин., при условии, что автоит распознавать цифры, на что я искренне надеюсь. То, что мне нужно от этого кода, делаю макросами на мишке, но это очень не удобно (их нужно часто переключать, и их 30 штук с 0.6 по 3.6 с шагом 0.1, одним словом - гемор). За работу предлагаю пополнить счет на сиволическую суму, например, 250руб (или 100грн). Если что пишите в личку, сегодня завтра буду чекать. И мне нужен код, а не скомпилированный * ЕХЕ-шник, так как, возможно мне нужно будет самостоятельно поменять множители для Т1,Т2 с 0.25-0.75 на 0.2-0.8.
Сообщение автоматически объединено:

Я так порылся и что то не нашел функции для распознавания чисел графичиским методотом.... Может она и есть. Но на всякий случай если ее нет, то я был бы рад вместо распознавания числа, что бы это число можно было в ручную задавать и менять без перезапуска скрипта, все же лучше чем 30 макросов вгружать по очереди....
Сообщение автоматически объединено:

и если можно окошко для ввода зделать маленьким поверх всех окон
Сообщение автоматически объединено:

я так понял мне с этим не помогут... не нашол как тему удалить, - можете удалять.
 
Последнее редактирование:

ra4o

AutoIT Гуру
Сообщения
1 101
Репутация
223
Если ещё актуально попробуй так :
Код:
#include <Misc.au3>
#include <WindowsConstants.au3>

Local $hDLL = DllOpen("user32.dll")
Local $fDiff = 1000 ; Время , в течении которого кнопка считается зажатой в миллисекундах

$hGUI = GUICreate('', 55, 30, 0, 0, BitOR($WS_POPUP, $WS_BORDER), BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
GUISetFont(14, 600)
WinSetOnTop($hGUI, "", 1)
$Input = GUICtrlCreateInput('', 0, 0, 55, 30)
GUISetState(@SW_SHOW)

While 1
    If _IsPressed("06", $hDLL) Then
        $hTimer = TimerInit()

        While _IsPressed("06", $hDLL)
            Sleep(250)
        WEnd

        If $fDiff <= TimerDiff($hTimer) Then _Cycle()

    ElseIf _IsPressed("1B", $hDLL) Then ;Выход по  Esc
        _Exit()
    EndIf
    Sleep(250)
WEnd

Func _Cycle()
    $X = GUICtrlRead($Input)
    $T1 = Round(1000 / $X * 0, 25 + 1)
    $T2 = Round(1000 / $X * 0, 75 / 5 + 1)
    Opt("SendKeyDownDelay", 0.5 * $T1 * 1000)
    Send("s")
    Opt("SendKeyDownDelay", 5)

    Sleep(0.5 * $T1 * 1000)
    Opt("MouseClickDownDelay", 0.5 * $T2 * 1000)
    For $i = 0 To 4
        MouseClick("left")
        Sleep(0.5 * $T2 * 1000)
    Next
    Opt("MouseClickDownDelay", 5)

EndFunc   ;==>_Cycle

Func _Exit()
    DllClose($hDLL)
    Exit
EndFunc   ;==>_Exit
 
Верх