Что нового

OpenMenu Модуль

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
OpenMenu v0.1

Код:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
;; Модуль OpenMenu v0.1 Модуль работы с игровым меню
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
;; Применение:
;; Само тело функции расместить в любой удобной части скрипта.
;; Использовать ссылку на функцию из любой части скрипта, для работы с меню или же овервью.
;; Зависимость: ЕСТЬ
;; Данный модуль зависит от CS и StrokeSelect модулей. Для его использования необходимо включить эти модули в тело скрипта.
;; Точные названия необходимых модулей: CS($Time); StrokeSelect($Stroke).
;; Описание:
;; Модуль OpenMenu - это подуль предназначенный для работы с овервью и игровым меню в плоть до второго уровня глубины списка
;; $Stroke - Номер строки (сверху) которую нужно активировать
;; $MenuX - Координата Х кнопки меню с которым необходимо взаимодействовать
;; $MenuY - Координата Y кнопки меню с которым необходимо взаимодействовать
;; $Type - Тип взаимодействия. Типа может быть два, 1- взаимодействие с главным меню игры, 2 - взаимодействие с меню овервью
;; $Run - Уровень меню на который вам нужно попасть. Для взаимодействия со вторым уровнем меню необходимо сперва отработать на первом уровне, т.е. запроса будет два подряд, сперва на первый а потом на второй уровень.
;; OpenMenu(6, $MenuX, $MenuY, 1, 1) - ссылка на функцию, нажимающая на 6-ю строку главного меню игры
;; OpenMenu(1, $StrokeX, $StrokeY2, 1, 2) - ссылка на функцию, нажимающая на 1-ю строку 2-го уровня главного меню игры
;; OpenMenu(1, $OverviewX, $OverviewY, 2, 1) - ссылка на функцию, нажимающая на 1-ю строку овервью
;; Принцип работы:
;; Модуль ориентирован на работу с букмарками, тоесть перед тем как его использовать в самой игре необходимо выставить букмарки на все места куда вы хотите попасть с помощью этого модуля
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
Func OpenMenu($Stroke, $MenuX, $MenuY, $Type, $Run)
    Global $MouseSpeed = 15
    Select
        Case $Type = 1
            TT("Открываю Главное Меню")
            winmove("EVE", "", 0, 21)
        Case $Type = 2
            TT("Открываю Овервью")
            winmove("EVE", "", -520, 21)
            $Correction = 0
    EndSelect
    Select
        Case $Run = 1
            TT("Открываю Главное Меню")
            $Correction = 0
            $Correction2 = 10
            MouseClick("left",$MenuX, $MenuY, 1, $MouseSpeed)
        Case $Run = 2
            TT("Открываю Овервью")
            $Correction = 15
            $Correction2 = 0
        Case $Run = 3
            TT("Открываю Овервью")
            $Correction = 15
            $Correction2 = 0
    EndSelect
    Global $StrokeX = $MenuX+100
    Global $StrokeY = $MenuY+$Correction2
    Global $StrokeX2 = $StrokeX+100
    Global $StrokeY2 = $MenuY+$Stroke*15-$Correction
    Global $WaitTime = 150
    CS($WaitTime)
    StrokeSelect($Stroke, $StrokeX, $StrokeY2, $Type, $Run)
    CS(500)
EndFunc ;==>OpenMenu
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: OpenMenu

OpenMenu v0.4 by Lyuk с использованием ImageSearch
Код:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
;; Модуль OpenMenu v0.4 Модуль работы с игровым меню
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
;; Применение:
;; Само тело функции расместить в любой удобной части скрипта. В начале скрипта установить переменные с координатами кнопок меню и овервью
;; Использовать ссылку на функцию из любой части скрипта, для работы с меню или же овервью.
;; Зависимость: ЕСТЬ
;; Данный модуль зависит от CS, ImageSearch и TT модулей. Для его использования необходимо включить эти модули в тело скрипта.
;; Точные названия необходимых модулей: CS($Time); TT($TTT); ImageSearch.au3
;; Описание:
;; Модуль OpenMenu - это подуль предназначенный для работы с овервью (1 уровень) и игровым меню вплоть до четвёртого уровня глубины списка
;; $Stroke1 и т.д. - Номер строки (сверху) которую нужно активировать в соответствующем уровне вложености
;; $Type - Тип взаимодействия. Типа может быть три, 1- взаимодействие с главным меню игры, 2 - взаимодействие с меню овервью, 3 - выбор строки в овервью
;; OpenMenu(6, 0, 0, 0, 0, 1) - ссылка на функцию, нажимающая на 6-ю строку главного меню игры
;; OpenMenu(1, 3, 0, 0, 0, 1) - ссылка на функцию, нажимающая на 3-ю строку 2-го уровня главного меню игры
;; OpenMenu(1, 0, 0, 0, 0, 2) - ссылка на функцию, нажимающая на 1-ю строку меню овервью
;; OpenMenu(1, 0, 0, 0, 0, 3) - ссылка на функцию, нажимающая на 1-ю строку овервью
;; Принцип работы:
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
#include "ImageSearch.au3"
Func OpenMenu($Stroke1, $Stroke2, $Stroke3, $Stroke4, $Stroke5, $Type)
    Global $MouseSpeed = 10
    $x1 = 0
    $y1 = 0
    Dim $result = 0
    Select
        Case $Type = 1
            TT("Открываю " & $Stroke1 & "-ю строку Главного Меню")
            MouseClick("left", $MenuX, $MenuY, 1, $MouseSpeed)
            Global $StrokeX = $MenuX + 100
            Global $StrokeY = $MenuY + 10 + ($Stroke1 * 16.2 - 16.2)
            CS(3000)
            MM()
            If $Stroke2 <> 0 Then
                TT("Открываю " & $Stroke2 & "-ю строку 2 уровня")
                $StrokeX = $StrokeX + 70
                MM()
                If $Stroke1 < 5 Then
                    $StrokeY = $StrokeY + ($Stroke2 * 16.2 - 16.2)
                Else
                    $StrokeY = $StrokeY + 1 + ($Stroke2 * 16.2 - 16.2); бывает что шаг меню в букмарках другой (с русскими шрифтами)
                EndIf
                $result = _ImageSearchArea("StrelkaMenu.bmp", 1, $StrokeX, $StrokeY-10, $StrokeX+250, $StrokeY+10, $x1, $y1, 100); корректировка на стрелку в меню
                If $result = 1 Then
                    $StrokeX=$x1-15
                    $StrokeY=$y1
                    $result = 0
                EndIf
                MM()
                If $Stroke3 <> 0 Then
                    TT("Открываю " & $Stroke3 & "-ю строку 3 уровня")
                    $StrokeX = $StrokeX + 50
                    MM()
                    $StrokeY = $StrokeY + 7 + ($Stroke3 * 16.2 - 16.2)
                    $result = _ImageSearchArea("StrelkaMenu.bmp", 1, $StrokeX, $StrokeY-10, $StrokeX+250, $StrokeY+10, $x1, $y1, 100); корректировка на стрелку в меню
                    If $result = 1 Then
                        $StrokeX=$x1-15
                        $StrokeY=$y1
                        $result = 0
                    EndIf
                    MM()
                    If $Stroke4 <> 0 Then
                        TT("Открываю " & $Stroke4 & "-ю строку 4 уровня")
                        $StrokeX = $StrokeX + 50
                        MM()
                        $StrokeY = $StrokeY + 2 + ($Stroke4 * 16.2 - 16.2)
                        $result = _ImageSearchArea("StrelkaMenu.bmp", 1, $StrokeX, $StrokeY-10, $StrokeX+250, $StrokeY+10, $x1, $y1, 100); корректировка на стрелку в меню
                        If $result = 1 Then
                            $StrokeX=$x1-15
                            $StrokeY=$y1
                            $result = 0
                        EndIf
                        MM()
                    EndIf
                EndIf
            EndIf
        Case $Type = 2
            TT("Открываю " & $Stroke1 & "-ю строку меню Овервью")
            MouseClick("left", $OverviewX, $OverviewY, 1, $MouseSpeed)
            Global $StrokeX = $OverviewX + 100
            Global $StrokeY = $OverviewY + 10 + ($Stroke1 * 16.2 - 16.2)
            MM()
            CS(5000)
        Case $Type = 3
            TT("Выделяю " & $Stroke1 & "-ю строку Овервью")
            Global $StrokeX = $OverviewX + 10
            Global $StrokeY = $OverviewY + 57 + ($Stroke1 * 20 - 20)
            MM()
            CS(1000)
    EndSelect
    MouseClick("left")
    CS(1000)
EndFunc ;==>OpenMenu
Func MM()
    MouseMove($StrokeX, $StrokeY, $MouseSpeed)
    CS(1000)
EndFunc ;==>MM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;

Lyuk сказал(а):
Этот вариант у меня стабильно работает в любой системе, координаты несколько отличаются от твоих потому что стоит стандартная тема Windows XP, окно EVE двигаю в 0, 0. Расчетная координата корректируется по этому изображению:
StrelkaMenu.bmp - "
fapbcaabg.jpg
"
ImageSearch можно взять тут
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: OpenMenu

Archy26 сказал(а):
Кхм. У каждого свой путь. я не исключаю, что у кого-то в опенменю имаджсёрч будет стабильно работать Smile

Лично у меня работает крайне нестабильно. Кроме того, мы обнаружили, что на разных компах есть ещё возможность программной коррекции цвета. И тогда на монитор выдаётся картинка с корректированым цветом. Но это ещё не всё. Сам винда рисует всё с этой кореекцией. поэтому - либо сбрасывайте все настройки цвета на видеокарте на заводские и используйте ТОЛЬКО НАСТРОЙКИ МОНИТОРА для вывода привильного изображения, либо не надейтесь на одинаковый результат в pixelSearch и ImageSearch на разных компах.

PS.: Блин, столько лет проработал дизайнером. Можно сказать профи в этом деле, а впервые обратил внимание на этот вот "пустячок".

PPS.: я подозреваю, новый виток развития стандартизации. Не только одинаковые настройки в клиенте. НО И ЕЩЁ ОДИНАКОВЫЕ НАСТРОЙКИ ВИДЕОКАРТ.

PPPS (что означает полный п): В результате вдумчивого осмысления, признал эту меру стандартизации неэффективной. Может оказаться, что разные видеокарты используют для вывода разные настроки и разные привязки к одним и тем же цветовым таблицам. В общем - утилитарность и универсальность функций несущих в себе пиксельсерч с шейдом 1 или имаджсерч признана невозможной. Как факт.
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: OpenMenu

Trianglecheck v0.1 by Archy26
Код:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
;; Модуль TriangleCheck v0.1 Модуль "привязки" к белому треугольнику для работы с игровым меню
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
;; Применение:
;; Само тело функции расместить в любой удобной части скрипта.
;; Использовать ссылку на функцию из любой части скрипта, для работы с меню или же овервью.
;; Зависимость: НЕТ
;; Описание:
;; Модуль Trianglecheck - это модуль предназначенный для включения в модуль OpenMenu.
;; Принцип работы:
;; Выполняет поиск первого близкого к белому цвету пикселя в области поиска, после чего, проверяет наличие треугольника по его вершинам. Сработал без сбоев более
;; 10 000 раз подряд, недоверять ему у меня просто нет причин.
;; Примечание:
;; Код оптимизирован, работает настолько быстро, насколько это вообще возможно для винАПИшного GetPixel()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
 
Dim $TriangeCentreX, $TriangeCentreY, $SearchAreaLTX, $SearchAreaLTY, $SearchAreaRBX, $SearchAreaRBY
Global $x = [i]0, $y = 0
Func TriangleCheck($SearchAreaLTX, $SearchAreaLTY, $SearchAreaRBX, $SearchAreaRBY) ; ищем x, y центра треугольника путём проверки по вершинам.
    Opt("PixelCoordMode", 0)
    Opt("MouseCoordMode", 0)
    Local $ix, $iy, $a, $aa, $aaa, $aab, $aac, $aad, $b, $bb, $bbb, $bbc, $c, $cc, $aaaH, $aabH, $aacH, $aadH, $bbbH, $bbcH, $bbc
    For $iy = $SearchAreaLTY To $SearchAreaRBY step 1
        For $ix = $SearchAreaLTX To $SearchAreaRBX step 1
            $aa = TrimColor("0x"&Hex(PixelGetColor($ix, $iy), 6))
            If $aa > 230 Then
                If $aa > 230 And 255 = $aa < 255 Then
                    $aaa = TrimColor("0x"&Hex(PixelGetColor($ix, $iy + 1), 6))
                    If $aaa > 230 And 255 = $aaa < 255 Then
                        $aab = TrimColor("0x"&Hex(PixelGetColor($ix, $iy + 2), 6))
                        If $aab > 230 And 255 = $aab < 255 Then
                            $aac = TrimColor("0x"&Hex(PixelGetColor($ix, $iy + 3), 6))
                            If $aac > 230 And 255 = $aac < 255 Then
                                $aad = TrimColor("0x"&Hex(PixelGetColor($ix, $iy + 4), 6))
                                If $aad > 230 And 255 = $aad < 255 Then
                                    $bb = TrimColor("0x"&Hex(PixelGetColor($ix + 1, $iy + 1), 6))
                                    If $bb > 230 And 255 = $bb < 255 Then
                                        $bbb = TrimColor("0x"&Hex(PixelGetColor($ix + 1, $iy + 2), 6))
                                        If $bbb > 230 And 255 = $bbb < 255 Then
                                            $bbc = TrimColor("0x"&Hex(PixelGetColor($ix + 1, $iy + 3), 6))
                                            If $bbc > 230 And 255 = $bbc < 255 Then
                                                $cc = TrimColor("0x"&Hex(PixelGetColor($ix + 2, $iy + 2), 6))
                                                If $cc > 230 And 255 = $cc < 255 Then
                                                    $x = $ix + 1
                                                    $y = $iy + 2
                                                    ExitLoop
                                                EndIf
                                            EndIf
                                        EndIf
                                    EndIf
                                EndIf
                            EndIf
                        EndIf
                    EndIf
                EndIf
            EndIf
        Next
        If Not $x = 0 Then ExitLoop
    Next
EndFunc
 
Func TrimColor($TargetTrim)
    #cs TrimarkColor - Comment Start
        Исползуется для получения из цвета в формате RGB значение яркости пикселя. Возвращает значение от 0 до 255.
        Скорость:
        Функция выполняется за ~0.06-0.10 мс.
    #ce TrimarkColor - Comment End
    Dim $a, $as, $as1, $as2, $a_fin
    $a = Hex($TargetTrim, 6)
    $a_fin = (Dec(StringTrimRight($a, 4)) + Dec(StringTrimLeft(StringTrimRight($a, 2), 2)) + Dec(StringTrimLeft($a, 4)))/3
    $TargetTrim = Round($a_fin, 0)
    Return $TargetTrim
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Re: OpenMenu

Lyuk сказал(а):
1) ссылка была выше ( http://www.autoitscript.com/forum/index.php?showtopic=65748 ) я использую имаджсёрч из первого поста темы, думал может вы скачали более новую версию которая там дальше в ветке есть.
2) Суть в том что нужно вырезать треугольник из уже выбранной строки, иначе глючит потому что цвет меняется при наведении мыши :

primer.png


3) Скорость имаджсёрча: 20 - 80 ms в зависимости от местоположения треугольника.
Скорость трианглчек : 9241 ms и больше.
4) К сожалению делиться пока нечем , эксперименты пока не завершены, нет времени. Мне до ваших результатов очень далеко, у вас все работает в комплексе, а у меня только несколько сырых модулей.
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
OpenMenu v0.6

Собственно в связи с тем что щас решил накатать хантера для импы, будет обновлен ряд модулей, вот собственно OpenMenu который будет использован в EVE Hunt Bot пишем за несколько часов :D
Модуль написан для Dominion. неизвестно как оно будет работать в других обновлениях.
Код:
Opt("PixelCoordMode", 2) ;Отсчет координат пикселей от левого верхнего угла клиентской части окна
Opt("MouseCoordMode", 2) ;Отсчет координат мыши от левого верхнего угла клиентской части окна
Opt("MustDeclareVars", 1) ;Форсируем задачу переменных. Тоесть после задания этой опции перед тем как нам использовать какую-либо переменную нам надо обозначить ее.
Global $MainMenu[4] = [51, 45, 54, 48] ;Координаты кнопки главного меню
Global $Win = "EVE"

WinActivate($Win)
WinWaitActive($Win)

OpenMenu(4, 2, 4)

Func OpenMenu($L1, $L2, $L3) ;Фишечка для работы с меню игры
    $L1 = $L1-1
    $L2 = $L2-1
    $L3 = $L3-1
    Local $x = Random($MainMenu[0], $MainMenu[2]), $y = Random($MainMenu[1], $MainMenu[3])
    MouseClick("left", $x, $y, 1, 10)
    Sleep(500)
    Local $var = PixelSearch($x, $y+8+15*$L1, $x+500, $y+8+15*$L1, 0xCDCDCD, 5);Ищим треугольник справа от строки на которую хотим ткнуть
    If Not @error Then ;если нашли
        MouseMove($var[0], $var[1], 5) ;наводим на него мышь и тем самым открываем второй уровень меню
        Sleep(500)
        Local $var1 = PixelSearch($var[0]+50, $var[1]+15*$L2, $var[0]+500, $var[1]+15*$L2, 0xCDCDCD, 5) ;а5 ищим треугольник справа от строки на которую хотим ткнуть
        If Not @error Then ;если нашли
            MouseMove($var1[0], $var1[1], 5) ;наводим на него мышь и тем самым открываем третий уровень меню
            Sleep(500)
            MouseClick("Left", $var1[0]+50, $var1[1]+15*$L3, 1, 5) ;Ну и таки жмакаем на команду на  которую хотели. Я буду работать только со строками варп в 0 и док, так что Warp to with in, изголяться и добавлять работу с 4-м уровнем меню я не стал
        Else
            SetError(2)
        EndIf
    Else
        SetError(1)
    EndIf
EndFunc
 

usrman

Новичок
Сообщения
13
Репутация
0
2Belfigor

Не знаю как с Dominion но с tyrannis модуль не работает при $L2 > 4
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Не знаю, у меня все работает, хотя я уже 10 раз перепатчил этот модуль :smile:
 

usrman

Новичок
Сообщения
13
Репутация
0
ОК, буду пробовать.
У меня если $L2 <= 4 работает отлично, но если > 4 открывает 2-ой уровень и пауза и опять по-кругу.
Похоже что в этом месте: Local $var1 = PixelSearch($var[0]+50, $var[1]+15*$L2, $var[0]+500, $var[1]+15*$L2, 0xCDCDCD, 5)
не находит треугольник. :-(
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Ты куда ткнуть то пытаешься, скажи? Я писал этот модуль исключительно для варпа по белтам и дока на станцию.
 

usrman

Новичок
Сообщения
13
Репутация
0
Все работает отлично, это я тормозил. Сорри
 

luhta

Новичок
Сообщения
8
Репутация
0
есть ли у кого новый модуль openmenu
|поделитесь плиз
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
В чём проблема? Почини один из предложенных ранее.
 

hikki

Продвинутый
Сообщения
233
Репутация
99
Флуда ради, любой из выше лежащих модулей работает так или иначе, его надо всеголиш поправить под текущие координаты, кому это надо уже сделали, мне не надо, модули рабочие, если тебе лень потратить полчаса на это то может вообще не надо? Потомучто завтра тебе понадобится переделать еще какой модуль.
 

running-frag

why me?
Сообщения
441
Репутация
60
интересный момент
не увидел в примерах проверку на "сработал ли Right Click Mouse", т.е. кликнула ли мышка

по личному опыту как в написании "самокатов" так и при ханте ручками, знаю что есть фичи "потери фокуса" после которых с первого раза не срабатывает RCM

а ещё интереснейший вопрос, стоит ли его зацикливает?
 

Lexx98

Продвинутый
Сообщения
272
Репутация
73
Да, проверка нужна.
Зацикливать бесконечно имхо не стоит. А то войдёт нейтрал в систему, а у тебя бот в бесконечном цикле клика по меню, и всё...
 

running-frag

why me?
Сообщения
441
Репутация
60
подумал ночью, родил, написал, уже пашет
но всё равно интересно мнение опытных, принцеп реализации или хотя бы мысли как в теории (меня НЕ интересует сам код) лучше сделать
 

Lexx98

Продвинутый
Сообщения
272
Репутация
73
Ну у меня к примеру делается двойной цикл.
Как пример...
Код:
$done==0
$i=0
Do
 ;тут назначение координат клика с ипользованием рандома
 ;тут клик
 $sec=0
 $i+=1 ; счётчик попыток
do
 $sec+=0.5
 sleep(500)
 if then ;условие проверки что клик прошёл и вызвал нужное действие
 ;к примеру выпал новый пункт меню, или меню исчезло, если клик последний
    $done=1
until $sec>=15 OR $done==1
  ;ждём отклика максимум 15 сек, и не ждём дольше, если действие сделано
Until  $done==1 OR $i>=5
  ; выходим из цикла если действие прошло, или 5 раз не получили результата клика.
  ; но надо в дальнейшем учитывать то, что 5 раз проверка действия таки может сорваться.
 

running-frag

why me?
Сообщения
441
Репутация
60
@SirMaksFromEho
у меня немного по другому получилось без кода выглядит так (описывать не буду) :rofl:
[opensource ON]
1. mousemove
2. checksum
3. mouseclick
4. checksum
5. mouseclick (click at selected)
6. mousemove
7. checksum
[opensource OFF]
по выходу имеем True or False, за функцией хоть в while его и пусть воздух гоняет :smile:)) то уже другая история

единственное что меня удручает так это что данная схем не сработает в НЕ мап моуде (давно зреет мысля как выйти за рамки карты) :(
 
Верх