Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ UO Pilot _ Работа с цветом

Автор: Женя777 19.7.2017, 13:53

Доброго времени суток!
Помогите пожалуйста, усовершенствовать код. Нужно в координатах 631, 548 использовать move, (что бы кнопка стала активной, (если она появится) и приняла свой цвет)
далее проверить, если цвет 1976966 присутствует, то клик в эту точку, если нет, то продолжение цикла (кода.)
Подскажите пожалуйста, как написать данную часть кода?

Автор: cirus 19.7.2017, 13:59

Что значит если она появится? Т. е. её может и не быть или имелось ввиду может подсветится, а может нет?

Автор: Женя777 19.7.2017, 14:25

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

Что значит если она появится? Т. е. её может и не быть или имелось ввиду может подсветится, а может нет?

Появляется рандомно, и редко. К примеру у меня в игре 92 друга, я к каждому другу должен зайти в таверну, и ещё бафнуть каждого. Вот после того как бафаю, может появится окно, с кнопкой которую нужно нажать, что бы окно закрылось. Иначе скрипт будет работать в холостую. Вчера это окно не появилось ни разу, а сегодня три раза.
Допустим я зашёл в таверну, затем бафнул первого друга, и тут открылось это окно. Скрипт работает, но продвижения нет. Других не бафает. Поэтому нужно каждый раз проверять, не появилась ли эта кнопка, и если появилась, то нажать на неё.

Автор: cirus 19.7.2017, 14:34

Делаем картинку кнопки и ищем с помощью http://uopilot.tati.pro/index.php?title=Findimage

Автор: Женя777 19.7.2017, 14:44

Цитата(cirus @ 19.7.2017, 17:34) *

Делаем картинку кнопки и ищем с помощью http://uopilot.tati.pro/index.php?title=Findimage
Это обязательно? Я ведь определил цвет.

Автор: cirus 19.7.2017, 15:07

Не обязательно, так проще и избавляет от не нужных действий.
Можно и так:

Код
move 631, 548     
wait 500
if 631, 548 1976966   // если цвет совпадает
     kleft  631, 548     //  клик
end_if


Автор: Женя777 19.7.2017, 15:09

Цитата(cirus @ 19.7.2017, 18:07) *

Не обязательно, так проще и избавляет от не нужных действий.
Можно и так:
Код
move 631, 548     
wait 500
if 631, 548 1976966   // если цвет совпадает
     kleft  631, 548     //  клик
end_if


Спасибо большое! Буду пробовать. )

Автор: FREEON 19.7.2017, 16:57

Есть ли решения для работы с несколькими цветами и массивами для функций if и while?
Нужно что бы пилот проверял цвет в одной и той же точке. Не знаю почему но иногда скрипт работает как положено, а затем происходит по непонятной причине сбой и в той же самой точке цвет уже другой. Затем через некоторое время все повторяется. Поэтому хочется сразу перечислить все варианты с помощью массива что бы не возвращаться к этой теме.

Код

init_arr %primer (1) 1000, 500 1118602
init_arr %primer (2) 1000, 500 1250190
set delimiter ' '
while_not %primer [1] or %primer [2]
    wait 500
end_while
//или
if %primer [1] or %primer [2]
    //выполнить действие
end_if

При таком коде пилот выдает ошибку синтаксиса... Есть ли решение или нужно задавать условие при помощи обычных параметрах X, Y Color?

Автор: cirus 20.7.2017, 1:58

Цитата
и в той же самой точке цвет уже другой.

Раньше в l2 немного менялись цвета в зависимости от времени суток в игре. Может что-то подобное.
Цитата
if %primer [1] or %primer [2]

В таком виде, если условий больше одного, их нужно заключать в скобки.
Код
if (%primer [1]) or (%primer [2])

Автор: Женя777 22.7.2017, 15:55

Цитата(cirus @ 20.7.2017, 4:58) *

Раньше в l2 немного менялись цвета в зависимости от времени суток в игре. Может что-то подобное.

В таком виде, если условий больше одного, их нужно заключать в скобки.
Код
if (%primer [1]) or (%primer [2])


Я нашёл глюк Пилота. Если пытатся определить цвет привязаного окна на уроовне панели windows, (если при этом панель windows находится поверх привязаного окна) то цвет определяется не привязаного окна, а этой самой панели windows.
Изображение

Автор: Cockney 22.7.2017, 16:33

код поиска какой?

Автор: Женя777 22.7.2017, 17:08

Цитата(Cockney @ 22.7.2017, 19:33) *

код поиска какой?

Вот часть кода:
Код

left 731, 713
wait 2000 + random (500)

if 363, 754 2769257
  stop_script
  end_if

Автор: cirus 22.7.2017, 18:02

Цитата
Я нашёл глюк Пилота. Если пытатся определить цвет привязаного окна на уроовне панели windows, (если при этом панель windows находится поверх привязаного окна) то цвет определяется не привязаного окна, а этой самой панели windows.

Это не глюк. if проверят цвет в активном окне. Т. е. в данном случае панели windows.
Проверить цвет в перекрытом окне можно, но там много нюансов.

Автор: Женя777 22.7.2017, 18:17

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

Это не глюк. if проверят цвет в активном окне. Т. е. в данном случае панели windows.
Проверить цвет в перекрытом окне можно, но там много нюансов.

У меня if проверят и находит цвет не толькцо в активном окне, так же и в перекрытом. Не находит только на уровне панели windows, вернее цвет находит, но цвет именно этой панели.

Автор: cirus 22.7.2017, 18:43

Цитата
У меня if проверят и находит цвет не толькцо в активном окне, так же и в перекрытом.

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

Автор: Женя777 22.7.2017, 18:56

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

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


Я наверное весь код не буду выкладывать, потому что он длинный. ( или выложить?)
Но вот часть от туда, которая выполняется в перекрытом окне, но перекрытом не пилотом, а ютубом:
Код

if 626, 549 1713791   // если цвет совпадает
left  631, 548     //  клик
wait 2000 + random (500)
end_if

Но выполняется код потому что координаты поиска цвета выше панели Виндовс, а почти такой же код который я привёл выше, не исполняется, потому что координаты поиска цвета на уровне панели Виндовс

Автор: cirus 22.7.2017, 19:14

Код
if 626, 549 1713791   // если цвет совпадает
    log +++
else
    log ---
end_if

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

Автор: new_fagot 22.7.2017, 22:49

Цитата(cirus @ 22.7.2017, 19:14) *


Не подскажешь, почему может случиться такое, что мышка перемещается, а прицел в игре нет? Пробовал move, move_smooth, drag, когда окно неактивно, мышка поверх него отрисована и перемещается, прицел в игре стоит на месте. Когда окно развернуто, то мышки не видно и прицел не двигается.

Извиняюсь за дикий оффтоп, просто в документации не нашёл ничего на этот счет.

Автор: cirus 22.7.2017, 23:19

Не все приложения воспринимают эмуляцию перемещения курсора. В шутере, скорее всего, не получится перемещать прицел.

Автор: new_fagot 22.7.2017, 23:31

Цитата(cirus @ 22.7.2017, 23:19) *

Не все приложения воспринимают эмуляцию перемещения курсора. В шутере, скорее всего, не получиться перемещать прицел.

Спасибо за ответ.

Автор: Женя777 30.7.2017, 12:54

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

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

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


Автор: cirus 30.7.2017, 13:33

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

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




Автор: Женя777 31.7.2017, 11:05

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

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

Виндовс 8,1. Я так сказать усовершенствываю скрипт, то есть он работает, но в любой момент может прерватся рандомным окном, которое пока не нажмёш, процесс далше не пойдёт. То есть для того что бы скрипт был полноценнорабочим, цвет в одной точке нужно проверять.

Автор: cirus 31.7.2017, 11: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, то это уже неплохо.


Автор: Женя777 31.7.2017, 13:38

Цитата(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, то два плюсика )

Автор: cirus 31.7.2017, 13:59

Цитата
Как правельно узнать имя окна? Я вписывал название вкладки - 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

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

Автор: Женя777 31.7.2017, 14:58

Цитата(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

Выяснил что код цвета во втором столбике всегда одинаковый, перекрыт окном или нет. )
В во втором столбике код цвета разный.

Автор: cirus 31.7.2017, 15:13

Цитата
Название окна оказалось:
"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

Автор: Женя777 31.7.2017, 17:02

Цитата(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


Что то не работают эти два кода именно на клик. (клик я подставлял)

Автор: cirus 1.8.2017, 1:53

Значит цвет не совпадает. Выводите в лог полученный цвет, будет сразу видно какой там цвет.

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

Автор: Женя777 1.8.2017, 11:00

Цитата(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


Действительно цвет не совпадал! )
Изображение
Счас правельный цвет подставил, заработало! )
А почему так? Иногда определяет правельно иногда нет..

Автор: cirus 1.8.2017, 12: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

Автор: Женя777 1.8.2017, 13:19

Цитата(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


Цвет не найден..

Автор: cirus 1.8.2017, 13:37

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

Автор: Женя777 1.8.2017, 14:42

Цитата(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

Автор: cirus 1.8.2017, 15: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

Автор: Женя777 1.8.2017, 17:02

Цитата(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


Испробовал проверил, всё работает! Спасибо большое!!! ))

Автор: Женя777 23.9.2017, 14:29

Доброго времени суток!
Помогите пожалуйста. Нужно что бы если в пяти точках цвет 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



Автор: cirus 23.9.2017, 16:06

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

Остальное думаю сами допишите.

Автор: DarkMaster 23.9.2017, 16:08

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

Автор: Женя777 23.9.2017, 16:22

Спасибо вам большое! Заработало! ))

Автор: MAXXIMUM 25.9.2017, 22:25

Зашел в тупик, не пойму как из него выходить.

Нужно найти цвет в определенном диапазоне в точке

Искомый цвет 2457012 либо 21... либо 23... либо 30... либо 16... Варьируются его оттенки.

Сам скрипт:

Код

set #x FindColor (133 580 134 581 1 1 (1500000-3100000) %ext 2 1 20)
if #x > 0
   код
end_if
end_script


Не работает, всегда не находит цвет

Код

if 133, 580 1500000 3100000
   код
end_if
end_script


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


Поиск сломался? или он теперь как то по другому работает?

п.с. в прикрепленном скриншоте if не сработал


Прикрепленные файлы
Прикрепленный файл  Screenshot_.bmp ( 379,31 килобайт ) Кол-во скачиваний: 98

Автор: DarkMaster 25.9.2017, 22:47

Потому что десятичное представление цвета дня нормального человека не скажет ничего. Если вы не говорите бип-бип и не мигаете лампочками, то вам нужен калькулятор)
https://forum.uokit.com/index.php?showtopic=22116

кстати можно воспользоваться и обычным виндовым в режиме программиста. вводите десятичное значение и переключаете в hex.

Автор: Cockney 25.9.2017, 22:57

Цитата
Потому что десятичное представление цвета дня нормального человека не скажет ничего


А шестнадцатеричная с этим лучше справится ?

Автор: MAXXIMUM 25.9.2017, 23:11

Цитата(DarkMaster @ 25.9.2017, 22:47) *

Потому что десятичное представление цвета дня нормального человека не скажет ничего. Если вы не говорите бип-бип и не мигаете лампочками, то вам нужен калькулятор)
https://forum.uokit.com/index.php?showtopic=22116

кстати можно воспользоваться и обычным виндовым в режиме программиста. вводите десятичное значение и переключаете в hex.



Я опробовал точный цвет, после этого я опробовал перебрать несколько точных цветов (if xy 16... or 21... и т.д.) Они так же почему то не срабатывали ни в привязке к окну, ни в привязке к абсолютным координатам... sad.gif

Автор: DarkMaster 26.9.2017, 1:38

Можно увидеть точные цвета которые вы получили по ctrl+a и код который вы написали под диапазоны?

Цитата
А шестнадцатеричная с этим лучше справится ?

Естественно. Там же по каналам как раз получится цвет. Будет что-то типа FF22AA, где:
AA - красный
22 - зеленый
FF - синий
Напоминаю на всякий случай, что в пилоте цвет задан, как BGR, а не RGB (винда так возвращает).

Автор: dron4938 26.9.2017, 9:50

Если игра на весь экран то максимум точно можно узнать координаты нужного пикселя посредством встроенного в винду Paint.
Делаем принтскрин экрана клавишей PrtScn
Открываем Paint и нажимаем ctrl+v.
Так же через Paint можно узнать цвет пикселя, наведя курсор пилота на нужный и ctrl+a.


Изображение

Автор: Андрей59 18.10.2017, 9:05

Приветствую всех.
не стал плодить темы, ибо вопрос прост, -
команда move при просмотре логов админами игры даст скачки курсора из одной заданной точки в другую или быстрое перемещение ???
команду move smooth мне запустить не удалось!

Автор: Женя777 18.10.2017, 9:38

Разве админы мониторят плавное перемищение курсора? По моему они отслеживают только время между кликами, время удержания кнопки и точки кликов, они должны быть рандомными..

Автор: Андрей59 18.10.2017, 10:09

Цитата(Женя777 @ 18.10.2017, 10:38) *

Разве админы мониторят плавное перемищение курсора? По моему они отслеживают только время между кликами, время удержания кнопки и точки кликов, они должны быть рандомными..

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

а какая команда регулирует рендомное время удержания кнопки?

Автор: Женя777 18.10.2017, 10:14

Цитата(Андрей59 @ 18.10.2017, 13:09) *

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

а какая команда регулирует рендомное время удержания кнопки?


Например вот:
Код
set MouseClickDelay 300 + random(70)
left 248, 757

Пишется в самом начале кода один раз.
На счёт наличия в маршруте движения каких либо условий не понял, каких условий?

Автор: Андрей59 18.10.2017, 11:33

Цитата(Женя777 @ 18.10.2017, 11:14) *


На счёт наличия в маршруте движения каких либо условий не понял, каких условий?

скажем захватив мышкой предмет (А) вы перемещаете его в точку (И) - но прямой маршрут не возможен из-за наличия препятствия которое может быть а может нет.

если команда MOVE просто перемещает курсор из (А) в (И) то получится что через препятсятвие(например дверь закрыта и ее сначала открыть надо)

Автор: Женя777 18.10.2017, 11:41

Цитата(Андрей59 @ 18.10.2017, 14:33) *

скажем захватив мышкой предмет (А) вы перемещаете его в точку (И) - но прямой маршрут не возможен из-за наличия препятствия которое может быть а может нет.

если команда MOVE просто перемещает курсор из (А) в (И) то получится что через препятсятвие(например дверь закрыта и ее сначала открыть надо)

Ну да, дверь сначала нужно открыть. А что за игра?

Автор: cirus 18.10.2017, 11:44

Цитата
команду move smooth мне запустить не удалось!

Код
move_smooth 100 100
wait 300
move_smooth 1500 700
end_script

Цитата
set MouseClickDelay 300 + random(70)
left 248, 757
Пишется в самом начале кода один раз.

Пишется перед каждым кликом.
Цитата
скажем захватив мышкой предмет (А) вы перемещаете его в точку (И) - но прямой маршрут не возможен из-за наличия препятствия которое может быть а может нет.
если команда MOVE просто перемещает курсор из (А) в (И) то получится что через препятсятвие(например дверь закрыта и ее сначала открыть надо)

Сначала просчитывается маршрут, а потом выполняются действия.


Автор: Андрей59 18.10.2017, 12:36

left 742, 368
move_smooth 742 368
wait 1300
move_smooth 267 409
end_script

не вижу принципиальных отличий, от
move_smooth 100 100
wait 300
move_smooth 1500 700
end_script

однако не работает


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: cirus 18.10.2017, 13:11

Разница есть во времени перемещения.

Цитата
left 742, 368
move_smooth 742 368

Это баг, нельзя перемещать курсор в ту же точку. Надо хотя бы на 2 пикселя больше или меньше.
Баг исправлен в бета версии пилота http://uopilot.uokit.com/, night version Build 011 и ещё надо будет lua 5.1 рядом с ним положить.

Автор: Женя777 18.10.2017, 13:45

Цитата(cirus @ 18.10.2017, 14:44) *

Код
set MouseClickDelay 300 + random(70)
end_script


Пишется перед каждым кликом.


Я извиняюсь, а почему в примере Пишется один раз?:
http://uopilot.tati.pro/index.php?title=MouseClickDelay



Цитата(Андрей59 @ 18.10.2017, 15:36) *

left 742, 368
move_smooth 742 368
wait 1300
move_smooth 267 409
end_script

не вижу принципиальных отличий, от
move_smooth 100 100
wait 300
move_smooth 1500 700
end_script

однако не работает

Я то же в forge of empires гамаю )

Автор: cirus 18.10.2017, 14:03

Цитата
Я извиняюсь, а почему в примере Пишется один раз?:

Там и рандома нет. Просто отпускание кнопки через 30 мсек.
для теста
Код
// 10 кликов
set mouseclickdelay 200 + random (1000)
for #i 1 10
    set timer
    kleft 100 100
    log timer
end_for
log

// 10 кликов
for #i 1 10
    set mouseclickdelay 200 + random (1000)   // время отпускания считается перед каждым кликом
    set timer
    kleft 100 100
    log timer
end_for
end_script

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)