Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Findimage, Антикапча
dunkel
сообщение 2.11.2018, 0:45
Сообщение #1


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



Хочу побороть элементарную капчу

Суть капчи такова Прикрепленное изображение

Всего в капче 8 рисунков. Когда она выскакивает появляется окошко разделённое чертой. Сверху 2-а случайных рисунка из 8-и. А ниже все 8-ем из которых нужно выбрать 2-а что были выше.

Как сделать чтобы скрипт искал картинки сверух вниз и слева направо (хотя вроде по умолчанию как раз так) И если встретил похожие то кликал по ним. То есть когда он встречал бы знакомый рисунок впервые, он бы на него не реагировал, а реагировал только если он его встретил во второй или в третий раз.


Я пробовал крутить с этим скриптом, но где то я что то упускаю.

set #startX 0
set #startY 0
set #endX 1200
set #endY 720
set $path "c:\ima\"
set %image [1] c1
set %image [2] c2
set %image [3] c3
set %image [4] c4
set %image [5] c5
set %image [6] c6
set %image [7] c7
set %image [8] c8
set #size size(%image) // всего картинок (Тут я так и не понял куда надо вставлять количество картинок. У меня их восемь)
hint #size

:metka
for #i 1 #size 1 // цикл для поиска картинок
set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2)
if #a > 0
kleft %arr[1 1] %arr[1 2]
wait 1000
end_if
end_for
wait 2000
goto metka
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 2.11.2018, 1:27
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2)
if #a > 0

Код
set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2 80 -1)  // -1 это искать все картинки
if size(%arr) > 1   // если найдено больше 1 картинки
    for #j 1 size(%arr)    // цикл для всех найденных картинок
        move %arr[#j 1] %arr[#j 2]   // навести курсор
        wait 500
    end_for
end_if
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dunkel
сообщение 2.11.2018, 1:48
Сообщение #3


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



Цитата(cirus @ 1.11.2018, 23:27) *

Код
set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2 80 -1)  // -1 это искать все картинки
if size(%arr) > 1   // если найдено больше 1 картинки
    for #j 1 size(%arr)    // цикл для всех найденных картинок
        move %arr[#j 1] %arr[#j 2]   // навести курсор
        wait 500
    end_for
end_if



А можешь написать, если не затруднит, как скрипт полностью в конечном варианте будет выглядить? Я сообщение что ты процитировал, на твой кусок скрипта заменял и он всё равно работает не корректно.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 2.11.2018, 2:06
Сообщение #4


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Код
set #startX 0
set #startY 0
set #endX 1200
set #endY 720
set $path "c:\ima\"
init_arr %image c1 c2 c3 c4 c5 c6 c7 c8

set #size size(%image)

for #i 1 #size 1 // цикл для поиска картинок
    set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2 100 -1 10)  // подобрать deviation если не находит картинки
    if  size(%arr) > 1   // если найдено больше 1 картинки
        for #j 1 size(%arr)    // цикл для всех найденных картинок
            move %arr[#j 1] %arr[#j 2]   // навести курсор
            wait 500
        end_for
    end_if
end_for
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dunkel
сообщение 2.11.2018, 2:48
Сообщение #5


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



Спасибо огромное. Работает. Только не всегда ищет сверху вниз и слева на право и выходит так что пара раз может нажать первее второй рисунок, но и так скрипт выполняет своё назначение.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 2.11.2018, 2:57
Сообщение #6


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
не всегда ищет сверху вниз и слева на право

Всегда. Сначала найдётся верхняя картинка, потом нижняя.
Если надо как-то по-другому сортировка массива: http://uopilot.tati.pro/index.php?title=Sort_array
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 2.11.2018, 6:56
Сообщение #7


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Цитата
Всегда. Сначала найдётся верхняя картинка, потом нижняя.

На какой-то старой версии был такой глюк.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dunkel
сообщение 2.11.2018, 11:00
Сообщение #8


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



Цитата(cirus @ 2.11.2018, 0:57) *

Всегда. Сначала найдётся верхняя картинка, потом нижняя.
.

Верхния и левая? Если брать мою капчу там 2 рисунка над чертой и желательно чтобы всегда нажималось первее на копию верхнего левого, а в данном виде скрип иногда нажимает первее на копию верхнего правого.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 2.11.2018, 11:41
Сообщение #9


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Ищутся коричневые квадраты - клик по верхнему, потом по нижнему.
Ищутся серые квадраты - клик по верхнему, потом по нижнему.

Если надо кликать как вы хотите, я уже писал - сортируйте массив. Алгоритм другой при этом:
Ищутся все картинки (при этом никуда не кликает), координаты записываются в массив, массив сортируется по координате X. Потом уже клики.
код
Код
set #startX 0
set #startY 0
set #endX 1200
set #endY 720
set $path "c:\ima\"
init_arr %image c1 c2 c3 c4 c5 c6 c7 c8

set #size size(%image)

set #z 1
for #i 1 #size 1 // цикл для поиска картинок
    set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2 100 -1 10)
    if  size(%arr) > 1   // если найдено больше 1 картинки
         init_arr %arr2 (#z) %arr [1 1] %arr [1 2] %arr [2 1] %arr [2 2]  // запись координат в массив
         set #z #z + 1
    end_if
end_for
sort_array %arr2 1  // сортировка по координате X

for #j 1 size(%arr2)
    move %arr2[#j 1] %arr2[#j 2]    // навести курсор на левую картинку
    wait 500
    move %arr2[#j 3] %arr2[#j 4]   // навести курсор на аналог картинки
    wait 500
end_for
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dunkel
сообщение 2.11.2018, 22:15
Сообщение #10


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



А можно сделать чтобы только после клика по серым квадратам находились координаты коричневого. Часто после первого клика чувствительно смешаются координаты 2ого объекта и его ранее сохранённые координаты могут быть уже неверны.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.11.2018, 1:33
Сообщение #11


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



код
Код
set #startX 0
set #startY 0
set #endX 1200
set #endY 720
set $path "c:\ima\"
init_arr %image c1 c2 c3 c4 c5 c6 c7 c8

set #size size(%image)

set findoffsetx 13   // смещение для координаты X
set findoffsety 11   // смещение для координаты Y
repeat 2   // повторить 2 раза
    set #z 1
    for #i 1 #size 1 // цикл для поиска картинок
        set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2 100 -1 10)
        if  size(%arr) > 1   // если найдено больше 1 картинки
            init_arr %arr2 (#z) %arr [1 1] %arr [1 2] %arr [2 1] %arr [2 2]
            set #z #z + 1
        end_if
    end_for
    sort_array %arr2 1

    kleft %arr2[1 1] %arr2[1 2]
    wait 500
    kleft %arr2[1 3] %arr2[1 4]
    wait 500

    set size(%arr2)
end_repeat
end_script

Кликнет по первой картинке и её аналоге, если они пропадут, то кликнет по второй паре.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dunkel
сообщение 3.11.2018, 2:04
Сообщение #12


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



Цитата(cirus @ 2.11.2018, 23:33) *


Кликнет по первой картинке и её аналоге, если они пропадут, то кликнет по второй паре.


Проблема возникает если картинка одинаковые (то есть если с верху 2 серых квадрата) и с низу получается уже 3я и 4я переменная, и ещё одна проблема появилась если капчи нету, то скрипт не находит не одной переменной и выдат ошибку.
Прикрепленное изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.11.2018, 2:22
Сообщение #13


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



код
Код
set #startX 0
set #startY 0
set #endX 1200
set #endY 720
set $path "c:\ima\"
init_arr %image c1 c2 c3 c4 c5 c6 c7 c8

set #size size(%image)

set findoffsetx 13   // смещение для координаты X
set findoffsety 11   // смещение для координаты Y
repeat 2
    set #z 1
    for #i 1 #size 1 // цикл для поиска картинок
        set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2 100 -1 10)
        if  size(%arr) = 4   // если найдено 4 картинки
            init_arr %arr2 (#z) %arr [1 1] %arr [1 2] %arr [3 1] %arr [3 2]
            set #z #z + 1
            init_arr %arr2 (#z) %arr [2 1] %arr [2 2] %arr [4 1] %arr [4 2]
        else
            if  size(%arr) = 2   // если найдено 2 картинки
                init_arr %arr2 (#z) %arr [1 1] %arr [1 2] %arr [2 1] %arr [2 2]
                set #z #z + 1
            end_if
        end_if
    end_for

    if  #z > 1
        sort_array %arr2 1
        kleft %arr2[1 1] %arr2[1 2]
        wait 500
        kleft %arr2[1 3] %arr2[1 4]
        wait 500
    else
        hint (20 clRed 500 500 -1 -1 (Не найдено одинаковых картинок))
    end_if

    set size(%arr2)
end_repeat
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dunkel
сообщение 3.11.2018, 2:41
Сообщение #14


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



Ошибку теперь не выдаёт и работает цеклично, но если вылезают 2 одинаковых рисунка в верхней части, то скрипт вообще не реагирует. Это наверное по тому что не 4 квадратика одинаковых, а 3. Просто на нижний надо нажать 2 раза (но после первого нажатия он может немного сдвинутся, так что фактически его надо будет "найти" ещё раз). И ещё почему то если 2ой квадратик в верхней части находится выше 1ого, то он 2 раза
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.11.2018, 3:04
Сообщение #15


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Цитата
Это наверное по тому что не 4 квадратика одинаковых, а 3. Просто на нижний надо нажать 2 раза

Может про это сразу надо было написать.
код
Код
set #startX 0
set #startY 0
set #endX 1200
set #endY 720
set $path "c:\ima\"
init_arr %image c1 c2 c3 c4 c5 c6 c7 c8

set #size size(%image)

set findoffsetx 13   // смещение для координаты X
set findoffsety 11   // смещение для координаты Y
for #j 1 2
    set #z 1
    for #i 1 #size 1 // цикл для поиска картинок
        set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2 100 -1 10)
        if  size(%arr) = 3   // если найдено 3 картинки
            if  #j = 1
                init_arr %arr2 (#z) %arr [1 1] %arr [1 2] %arr [3 1] %arr [3 2]  // координаты первой и третьей
                set #z #z + 1
            else
                init_arr %arr2 (#z) %arr [2 1] %arr [2 2] %arr [3 1] %arr [3 2]  // координаты второй и третьей
                set #z #z + 1
            end_if
        else
            if  size(%arr) = 2
                init_arr %arr2 (#z) %arr [1 1] %arr [1 2] %arr [2 1] %arr [2 2]
                set #z #z + 1
            end_if
        end_if
    end_for

    if  #z > 1
        sort_array %arr2 1
        kleft %arr2[1 1] %arr2[1 2]
        wait 500
        kleft %arr2[1 3] %arr2[1 4]
        wait 500
    else
        hint (20 clRed 500 500 -1 -1 (Не найдено одинаковых картинок))
    end_if

    set size(%arr2)
end_for
end_script

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 3.11.2018, 6:24
Сообщение #16


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Господа, а причем тут раздел плагинов?


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dunkel
сообщение 3.11.2018, 11:09
Сообщение #17


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



ДА! Это оно. Идеально! СПАСИБО большое за терпение и быстрые ответы.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dunkel
сообщение 3.11.2018, 16:20
Сообщение #18


***

Novice
Сообщений: 75
Регистрация: 20.1.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.296
Возраст: 30



Цитата(DarkMaster @ 3.11.2018, 4:24) *

Господа, а причем тут раздел плагинов?


Извиняюсь, раздел перепутал.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.3.2024, 20:58
Designed by Nickostyle