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

 
Ответить в эту темуОткрыть новую тему
> Не удается настроить клик по цвету
onufriy.chernov
сообщение 16.2.2017, 17:22
Сообщение #1


*

Registred
Сообщений: 2
Регистрация: 16.2.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.349
Возраст: 26



Добрый день всем!
Возникла проблема в браузерной игре нажать по цвету на круг который двигается. Пробовал подбирать уникальный цвет и через
set $a 0
while $a < 1
set $a findcolor (167 315, 1517 807, 1 1 (R(97)+G(91)+B(25), R(70)+G(55)+B(19), R(83)+G(67)+B(24)) %arr 2)
end_while
Repeat 5
left %arr [1 1], %arr [1 2]
End_repeat

Но клик не происходит. Видимо координаты получаем но за счет изменения объекта не попадаем.
Есть смещение по координатам но мне не удалось настроить.


Прикрепленные файлы
Прикрепленный файл  1.bmp ( 5,05 мегабайт ) Кол-во скачиваний: 136
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
dimоn
сообщение 17.2.2017, 2:05
Сообщение #2


***

Novice
Сообщений: 97
Регистрация: 24.10.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 17.079
Возраст: 27



Цитата(onufriy.chernov @ 16.2.2017, 17:22) *
left %arr [1 1], %arr [1 2]

Попробуй координаты задать через переменные, т.е.

Код
 set #x %arr [1 1]
set #y %arr [1 2]
left #x #y
//или
kleft #x #y


Если нет, логи нужно смотреть..
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 17.2.2017, 3:08
Сообщение #3


**********

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



Попробуйте запустить скрипт. Версия пилота 2.38 или выше.
Код
Код
// Поиск скученности пикселей

set #r2 350          //радиус разброса точек
set #min 70       //минимальное количество всех пикселей в группе
set #max 500      //максимальное количество всех пикселей в группе
init_arr %xy (1) 0 0 1920 1080                             //область поиска
init_arr %color (1) 3792629 2994907 2411220 4302798                                                          //цвета для поиска (от 1 до 5 цветов)
init_arr %m (1) 0 0 0 0 0     //минимальное количество пикселей каждого цвета с учётом % отклонения (всегда должно быть 5 чисел)
init_arr %deviat (1) 1 1 1 1 1     // % отклонения для каждого цвета (всегда должно быть 5 чисел)
set #mincol 2          //минимальное количество любого из указанных цветов (от 1 до 5)
set #timeproc 0        // время для поиска, если 0 не выйдет из процедуры пока не найдётся хотя бы 1 цвет
set linedelay 0


set size(%result)      // уничтожить массив с прошлыми результатами поиска
call heap %xy %color %m %deviat #r2 #min #max #mincol #timeproc
if  size(%result) > 0                       // если найдено хотя бы 1 группа
    for #i 1 size(%result)
        set #dist #dist + 1
        set #deskX desktopwidth / 2
        set #deskY desktopheight / 2
        set #distance round(point_distance (#deskX #deskY %result [#i 1] %result [#i 2]))
        init_arr %dist (#dist) #distance %result [#i 1] %result [#i 2]
    end_for
    sort_array %dist
    set #deltaY %result [1 2] + 40
    kleft %dist [1 2] %dist [1 3]
end_if
end_script




// процедура поиска
proc heap %xy %color %m %deviat #r2 #min #max #mincol #timeproc
    set #current_script current_script
    set delimiter ' '
    set #Xstart %xy[1 1]
    set #Ystart %xy[1 2]
    set #Xend %xy[1 3]
    set #Yend %xy[1 4]
    set #deviat maxx(%deviat[1])
    set #pix 0
    set #pix1 0
    set #g 0
    set size(%b)
    set size(%result)
    while size(%a) = 0 and (#timeproc > timer or #timeproc = 0)
        set #a findcolor(#Xstart #Ystart #Xend #Yend (%color[1]) %a 2 -1 #deviat)
        wait 10
    end_while
    set #pixel.#current_script #a
    if  #a > 0
        gosub rgb
        for #i 1 size(%a)
            set #g #g +1
            set #c1 0
            set #c2 0
            set #c3 0
            set #c4 0
            set #c5 0
            for #j #i size(%a)
                set #r round(point_distance(%a[#i 1] %a[#i 2] %a[#j 1] %a[#j 2]))
                if  #r < #r2
                    set #pixl #pix
                    if  %a[#j 3] >= %color[2 1] and %a[#j 3] <= %color[3 1]
                        set #c1 #c1 +1
                    else
                        if  %a[#j 3] >= %color[2 2] and %a[#j 3] <= %color[3 2]
                            set #c2 #c2 +1
                        else
                            if  %a[#j 3] >= %color[2 3] and %a[#j 3] <= %color[3 3]
                                set #c3 #c3 +1
                            else
                                if  %a[#j 3] >= %color[2 4] and %a[#j 3] <= %color[3 4]
                                    set #c4 #c4 +1
                                else
                                    if  %a[#j 3] >= %color[2 5] and %a[#j 3] <= %color[3 5]
                                        set #c5 #c5 +1
                                    end_if
                                end_if
                            end_if
                        end_if
                    end_if
                    set #pix #c1 +#c2 +#c3 +#c4 +#c5
                    if  #pixl != #pix
                        set %a[#j 4] #g
                    else
                        set %a[#j 4] 0
                    end_if
                end_if
            end_for
            init_arr %b (#g) %a[#i 1] %a[#i 2] #pix #c1 #c2 #c3 #c4 #c5
            for #i #i size(%a)
                if  %a[#i 4] = ""
                    set #i #i -1
                    break
                end_if
            end_for
        end_for
        set #z 0
        for #l 1 size(%b)
            if  %b[#l 3] >= #min and %b[#l 3] <= #max
                if  (%b[#l 4] >= %m[1 1] or %m[1 1] = 0) and (%b[#l 5] >= %m[1 2] or %m[1 2] = 0) and (%b[#l 6] >= %m[1 3] or %m[1 3] = 0) and (%b[#l 7] >= %m[1 4] or %m[1 4] = 0) and (%b[#l 8] >= %m[1 5] or %m[1 5] = 0)
                    set #z1 0
                    for #m 4 8
                        if  %b[#l #m] > 0
                            set #z1 #z1 +1
                        end_if
                    end_for
                    if  #z1 >= #mincol
                        set #z #z +1
                        init_arr %result (#z) %b[#l]
                    end_if
                end_if
            end_if
        end_for
        for #i 1 size(%result)
            for #j 1 size(%result[])
                set %result.#current_script [#i #j] %result [#i #j]
            end_for
        end_for
    end_if
    goto end

    :rgb
        for #n 1 size(%color[1])
            set #cvet %color[1 #n]
            set #a1 colortorgb(#cvet %rgb)
            set #dev 255*%deviat[1 #n]/100
            set #bmin %rgb[1 3]-#dev
            set #bmax %rgb[1 3]+#dev
            if  #bmax > 255
                set #bmax 255
            end_if
            if  #bmin < 0
                set #bmin 0
            end_if
            set #gmin %rgb[1 2]-#dev
            set #gmax %rgb[1 2]+#dev
            if  #gmax > 255
                set #gmax 255
            end_if
            if  #gmin < 0
                set  #gmin 0
            end_if
            set #rmin %rgb[1 1]-#dev
            set #rmax %rgb[1 1]+#dev
            if  #rmax > 255
                set #rmax 255
            end_if
            if  #rmin < 0
                set #rmin 0
            end_if
            set %color[2 #n] #bmin *256*256+#gmin *256+#rmin
            set %color[3 #n] #bmax *256*256+#gmax *256+#rmax
        end_for
    return

    :end
end_proc
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
onufriy.chernov
сообщение 17.2.2017, 9:21
Сообщение #4


*

Registred
Сообщений: 2
Регистрация: 16.2.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.349
Возраст: 26



Спасибо буду пробовать. Вырезать эту картинку проблематично т к она представляет собой окружность которая меняется в размере. Получается что цвета которые есть при ее одной конфигурации уже отсутствуют при другой.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 7.3.2017, 3:53
Сообщение #5


***********

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



Крайне рекомендую при этом поиске задать ограничение по количеству найденных точек. Т.е. как только он найдет первую, то сразу же прекратит, чтобы не задерживать камень. Для предотвращения долгого поиска на большой площади и в самом конце с большой задержкой нахождения объекта, рекомендую разбить область поиска на несколько небольших.


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

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

 

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