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

3 страниц V < 1 2 3 >  
Ответить в эту темуОткрыть новую тему
> Работа с цветом
Женя777
сообщение 30.7.2017, 12:54
Сообщение #21


***

Novice
Сообщений: 56
Регистрация: 3.8.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.063
Возраст: 20



Цитата(cirus @ 22.7.2017, 21:43) *

В таком виде if 363, 754 2769257 проверяет только в не перекрытом окне.
Например, разверните окно пилота на весь экран и проверьте. Условие не выполнится, т. к. окно с игрой будет перекрыто.

А можно как то сделать, что бы подобный скрипт работал, но в перекрытом окне?
Код
if 626, 549 1713791   // если цвет совпадает
left  631, 548     //  клик
wait 2000 + random (500)
end_if

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 30.7.2017, 13:33
Сообщение #22


**********

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



Цитата
А можно как то сделать, что бы подобный скрипт работал, но в перекрытом окне?

Можно. Какая винда используется? Обязательно цвет в одной точке проверять? Т. к. проще использовать findcolor или findimage.



Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Женя777
сообщение 31.7.2017, 11:05
Сообщение #23


***

Novice
Сообщений: 56
Регистрация: 3.8.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.063
Возраст: 20



Цитата(cirus @ 30.7.2017, 16:33) *

Можно. Какая винда используется? Обязательно цвет в одной точке проверять? Т. к. проще использовать findcolor или findimage.

Виндовс 8,1. Я так сказать усовершенствываю скрипт, то есть он работает, но в любой момент может прерватся рандомным окном, которое пока не нажмёш, процесс далше не пойдёт. То есть для того что бы скрипт был полноценнорабочим, цвет в одной точке нужно проверять.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 31.7.2017, 11:53
Сообщение #24


**********

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



Цитата
То есть для того что бы скрипт был полноценнорабочим, цвет в одной точке нужно проверять.

Я имел ввиду обязательно ли нужен if с проверкой цвета. Например, нужно проверить наличие какого-то объекта, можно сделать картинку это объекта и искать с помощью findimage. Или через findcolor искать определённый пиксель в указанной области.
Также для поиска цвета в перекрытых оконах должна быть тема aero.
Можно проверить цвет и через if.
Код
set #handle findwindow("имя окна")    // вписать имя окна
if color (626, 549 #handle) =  1713791
    log ++
else
    log --
end_if
end_script

Но, весьма вероятно, придётся указывать другие координаты, т. к. цвет будет проверяться относительно родительского окна, а не окна с игрой.
Можно проверить будет ли разница:
Код
// делаем привязку через Ctrl + A
set #handle findwindow("имя окна")    // вписать имя окна
get color #a 626, 549                
get color #b 626, 549 #handle
log #a    #b
end_script

Если #b будет не 0, то это уже неплохо.

Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Женя777
сообщение 31.7.2017, 13:38
Сообщение #25


***

Novice
Сообщений: 56
Регистрация: 3.8.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.063
Возраст: 20



Цитата(cirus @ 31.7.2017, 14:53) *

Я имел ввиду обязательно ли нужен if с проверкой цвета. Например, нужно проверить наличие какого-то объекта, можно сделать картинку это объекта и искать с помощью findimage. Или через findcolor искать определённый пиксель в указанной области.
Также для поиска цвета в перекрытых оконах должна быть тема aero.
Можно проверить цвет и через if.
Код
set #handle findwindow("имя окна")    // вписать имя окна
if color (626, 549 #handle) =  1713791
    log ++
else
    log --
end_if
end_script

Но, весьма вероятно, придётся указывать другие координаты, т. к. цвет будет проверяться относительно родительского окна, а не окна с игрой.
Можно проверить будет ли разница:
Код
// делаем привязку через Ctrl + A
set #handle findwindow("имя окна")    // вписать имя окна
get color #a 626, 549                
get color #b 626, 549 #handle
log #a    #b
end_script

Если #b будет не 0, то это уже неплохо.

Как правельно узнать имя окна? Я вписывал название вкладки - Forge of Empires, и просто и в кавычках, не получается. А если без этой строки вообще - set #handle findwindow, то два плюсика )
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 31.7.2017, 13:59
Сообщение #26


**********

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



Цитата
Как правельно узнать имя окна? Я вписывал название вкладки - Forge of Empires, и просто и в кавычках, не получается.

А с чего вы взяли что не получается?
Код
set #handle findwindow("Forge of Empires")
log #handle     // хендл окна (тот же самый если нажать ctrl + A на рамке браузера)
end_script

Цитата
А если без этой строки вообще - set #handle findwindow, то два плюсика )

Если окно не найдено, то будет проверять как обычно, как будто оно вообще не указано.
Код
// делаем привязку через Ctrl + A к окну с игрой (т. е. как обычно)
set #handle findwindow("Forge of Empires")  
get color #a 626, 549                
get color #b 626, 549 #handle     // в этом случае цвет будет всегда один и тот же, даже если окно с игрой перекрыть
log #a    #b
end_script

Что будет в логе?
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Женя777
сообщение 31.7.2017, 14:58
Сообщение #27


***

Novice
Сообщений: 56
Регистрация: 3.8.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.063
Возраст: 20



Цитата(cirus @ 31.7.2017, 16:59) *

А с чего вы взяли что не получается?
Код
set #handle findwindow("Forge of Empires")
log #handle     // хендл окна (тот же самый если нажать ctrl + A на рамке браузера)
end_script


Если окно не найдено, то будет проверять как обычно, как будто оно вообще не указано.
Код
// делаем привязку через Ctrl + A к окну с игрой (т. е. как обычно)
set #handle findwindow("Forge of Empires")  
get color #a 626, 549                
get color #b 626, 549 #handle     // в этом случае цвет будет всегда один и тот же, даже если окно с игрой перекрыть
log #a    #b
end_script

Что будет в логе?


Название окна оказалось:
"Forge of Empires - Mozilla Firefox")
Выяснил с помощю скрипта:
Код
set #handle findwindow("Forge of Empires")
log #handle     // хендл окна (тот же самый если нажать ctrl + A на рамке браузера)
end_script

С помощю этого скрипта:
Код
// делаем привязку через Ctrl + A к окну с игрой (т. е. как обычно)
set #handle findwindow("Forge of Empires")  
get color #a 626, 549                
get color #b 626, 549 #handle     // в этом случае цвет будет всегда один и тот же, даже если окно с игрой перекрыть
log #a    #b
end_script

Выяснил что код цвета во втором столбике всегда одинаковый, перекрыт окном или нет. )
В во втором столбике код цвета разный.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 31.7.2017, 15:13
Сообщение #28


**********

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



Цитата
Название окна оказалось:
"Forge of Empires - Mozilla Firefox")

Можно писать часть имени, тоже найдёт.
Цитата
Выяснил что код цвета во втором столбике всегда одинаковый, перекрыт окном или нет.

Значит повезло что нет смещения.
Тогда получается так будет:
Код
set #handle findwindow("Forge of Empires - Mozilla Firefox")     // это только вначале скрипта
if color (626, 549 #handle) =  1713791
    // тут клик или что там надо
end_if
     // или так
get color #a 626, 549 #handle
if #a = 1713791
   // тут клик или что там надо
end_if
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Женя777
сообщение 31.7.2017, 17:02
Сообщение #29


***

Novice
Сообщений: 56
Регистрация: 3.8.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.063
Возраст: 20



Цитата(cirus @ 31.7.2017, 18:13) *

Можно писать часть имени, тоже найдёт.

Значит повезло что нет смещения.
Тогда получается так будет:
Код
set #handle findwindow("Forge of Empires - Mozilla Firefox")     // это только вначале скрипта
if color (626, 549 #handle) =  1713791
    // тут клик или что там надо
end_if
     // или так
get color #a 626, 549 #handle
if #a = 1713791
   // тут клик или что там надо
end_if


Что то не работают эти два кода именно на клик. (клик я подставлял)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 1.8.2017, 1:53
Сообщение #30


**********

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



Значит цвет не совпадает. Выводите в лог полученный цвет, будет сразу видно какой там цвет.
Код
set #handle findwindow("Forge of Empires - Mozilla Firefox")     // это только вначале скрипта
get color #a 626, 549 #handle
log #a
if #a = 1713791
   // тут клик или что там надо
end_if
end_script
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Женя777
сообщение 1.8.2017, 11:00
Сообщение #31


***

Novice
Сообщений: 56
Регистрация: 3.8.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.063
Возраст: 20



Цитата(cirus @ 1.8.2017, 4:53) *

Значит цвет не совпадает. Выводите в лог полученный цвет, будет сразу видно какой там цвет.
Код
set #handle findwindow("Forge of Empires - Mozilla Firefox")     // это только вначале скрипта
get color #a 626, 549 #handle
log #a
if #a = 1713791
   // тут клик или что там надо
end_if
end_script


Действительно цвет не совпадал! )
(IMG:https://image.prntscr.com/image/i0LsMQ_nSWSYDd3usIatcA.gif)
Счас правельный цвет подставил, заработало! )
А почему так? Иногда определяет правельно иногда нет..
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 1.8.2017, 12:51
Сообщение #32


**********

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



Цитата
Иногда определяет правельно иногда нет..

При этом типе поиска может быть смещение координат, т. е. цвет определяется в других координатах.
А вообще в этой игре цвет всё время меняется. Понажимайте в одной точке Ctrl+A, цвет меняется иногда. На главной странице с игрой это видно если присмотреться.
Можно использовать findcolor с погрешностью в цвете.
Развернуть игру на весь экран, указать координаты и цвет, проверить найдётся ли цвет:
Код
set #handle findwindow (Forge)
init_arr %a (1) 231, 464 3164826     // координаты и цвет
set #startX %a[1 1] + 8              // смещение по X
set #startY %a[1 2]
set #a findcolor (#startX #startY #startX #startY (%a[1 3]) %arr #handle -1 3)   // погрешность в цвете 3%
if #a > 0
    log %arr [1 1] %arr [1 2]   %arr [1 3]
else
    log цвет не найден
end_if
end_script
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Женя777
сообщение 1.8.2017, 13:19
Сообщение #33


***

Novice
Сообщений: 56
Регистрация: 3.8.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.063
Возраст: 20



Цитата(cirus @ 1.8.2017, 15:51) *

При этом типе поиска может быть смещение координат, т. е. цвет определяется в других координатах.
А вообще в этой игре цвет всё время меняется. Понажимайте в одной точке Ctrl+A, цвет меняется иногда. На главной странице с игрой это видно если присмотреться.
Можно использовать findcolor с погрешностью в цвете.
Развернуть игру на весь экран, указать координаты и цвет, проверить найдётся ли цвет:
Код
set #handle findwindow (Forge)
init_arr %a (1) 231, 464 3164826     // координаты и цвет
set #startX %a[1 1] + 8              // смещение по X
set #startY %a[1 2]
set #a findcolor (#startX #startY #startX #startY (%a[1 3]) %arr #handle -1 3)   // погрешность в цвете 3%
if #a > 0
    log %arr [1 1] %arr [1 2]   %arr [1 3]
else
    log цвет не найден
end_if
end_script


Цвет не найден..
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 1.8.2017, 13:37
Сообщение #34


**********

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



Координаты и цвет подставили свои хоть?
Если да, значит смещение другое.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Женя777
сообщение 1.8.2017, 14:42
Сообщение #35


***

Novice
Сообщений: 56
Регистрация: 3.8.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.063
Возраст: 20



Цитата(cirus @ 1.8.2017, 16:37) *

Координаты и цвет подставили свои хоть?
Если да, значит смещение другое.

Конечно подставил! ) Но я думаю смещение мне не понадобится, я ведь научился определять цвет.
А Вы можете дописать в код ниже, так сказать процентный запас цвета который может изменится и из за этого не определится, процентов пять )
Код
set #handle findwindow("Forge of Empires - Mozilla Firefox")     // это только вначале скрипта
get color #a 155, 673  #handle
if #a = 12900073
left 155, 673   // тут клик или что там надо
end_if
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 1.8.2017, 15:17
Сообщение #36


**********

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



код
Код
set #handle findwindow("Forge of Empires - Mozilla Firefox")

set #deviation 10    // погрешность в цвете
set #color 12900073   // цвет
gosub rgb            // подпрограмма возвращает мин. и макс. цвет с учётом погрешности #Mincolor #Maxcolor
hint #Mincolor    #color     #Maxcolor     // можно убрать
get color #a 155, 673  #handle
if #a > #Mincolor and #a < #Maxcolor
    log +++
else
    log ---
end_if
end_script


// это в конец скрипта
:rgb
    set #R #color - #color / 256 * 256
    set #G (#color - #color / 65536 * 65536) / 256
    set #B #color / 65536
    set #Rmin #R - #deviation
    set #Rmax #R + #deviation
    set #Gmin #G - #deviation
    set #Gmax #G + #deviation
    set #Bmin #B - #deviation
    set #Bmax #B + #deviation
    if  #Rmin < 0
        set #Rmin 0
    end_if
    if  #Rmax > 255
        set #Rmax 255
    end_if
    if  #Gmin < 0
        set #Gmin 0
    end_if
    if  #Gmax > 255
        set #Gmax 255
    end_if
    if  #Bmin < 0
        set #Bmin 0
    end_if
    if  #Bmax > 255
        set #Bmax 255
    end_if
    set #Mincolor #Rmin + #Gmin * 256 + #Bmin * 65536
    set #Maxcolor #Rmax + #Gmax * 256 + #Bmax * 65536
return
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Женя777
сообщение 1.8.2017, 17:02
Сообщение #37


***

Novice
Сообщений: 56
Регистрация: 3.8.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.063
Возраст: 20



Цитата(cirus @ 1.8.2017, 18:17) *

код
Код
set #handle findwindow("Forge of Empires - Mozilla Firefox")

set #deviation 10    // погрешность в цвете
set #color 12900073   // цвет
gosub rgb            // подпрограмма возвращает мин. и макс. цвет с учётом погрешности #Mincolor #Maxcolor
hint #Mincolor    #color     #Maxcolor     // можно убрать
get color #a 155, 673  #handle
if #a > #Mincolor and #a < #Maxcolor
    log +++
else
    log ---
end_if
end_script
// это в конец скрипта
:rgb
    set #R #color - #color / 256 * 256
    set #G (#color - #color / 65536 * 65536) / 256
    set #B #color / 65536
    set #Rmin #R - #deviation
    set #Rmax #R + #deviation
    set #Gmin #G - #deviation
    set #Gmax #G + #deviation
    set #Bmin #B - #deviation
    set #Bmax #B + #deviation
    if  #Rmin < 0
        set #Rmin 0
    end_if
    if  #Rmax > 255
        set #Rmax 255
    end_if
    if  #Gmin < 0
        set #Gmin 0
    end_if
    if  #Gmax > 255
        set #Gmax 255
    end_if
    if  #Bmin < 0
        set #Bmin 0
    end_if
    if  #Bmax > 255
        set #Bmax 255
    end_if
    set #Mincolor #Rmin + #Gmin * 256 + #Bmin * 65536
    set #Maxcolor #Rmax + #Gmax * 256 + #Bmax * 65536
return


Испробовал проверил, всё работает! Спасибо большое!!! ))
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Женя777
сообщение 23.9.2017, 14:29
Сообщение #38


***

Novice
Сообщений: 56
Регистрация: 3.8.2016
Группа: Пользователи
Наличность: 0
Пользователь №: 18.063
Возраст: 20



Доброго времени суток!
Помогите пожалуйста. Нужно что бы если в пяти точках цвет 530735, то скрипт останавливался. Пробовал написать сам, но не получилось..

Код
get color #a 279, 756 #handle
get color #b 365, 756 #handle
get color #c 450, 756 #handle
get color #d 536, 756 #handle
get color #e 622, 756 #handle

if #a, #b, #c, #d, #e = 530735
stop_script
end_if


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


**********

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



Код
if #a = 530735 and #b = 530735 and #c = 530735

Остальное думаю сами допишите.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 23.9.2017, 16:08
Сообщение #40


***********

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



if #a = 530735 and #b = 530735 and #c = 530735 and #d = 530735 and #e = 530735


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

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

 

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