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

 
Ответить в эту темуОткрыть новую тему
> бот для pirates, Помогите в начинании
glykoman2010
сообщение 1.4.2017, 0:13
Сообщение #1


**

Neophyte
Сообщений: 10
Регистрация: 1.4.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.417
Возраст: 22



воспользовшись справкой накатал скрипт (нагло скопировал (IMG:style_emoticons/default/laugh.gif) )
Код

set #a findimage (832 198 832 230 (\gold2.bmp) %arr 2 60 -1)
set #w size (%arr) // получим число найденных картинок
msg Найдено картинок: #w
for #i 1 #w
   set #x %arr [#i 1]
   set #y %arr [#i 2]
   msg картинка в координатах: #x #y
end_for


фишка в том, что картинку не находит. что делаю не так? прилаживаю оригинал и мной вырезанный кусочек.


Прикрепленные файлы
Прикрепленный файл  gold2.bmp ( 2,16 килобайт ) Кол-во скачиваний: 410
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 1.4.2017, 2:12
Сообщение #2


**********

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



Цитата
832 198 832 230

Область поиска неправильно указана. Получается полоска шириной в 1 пиксель.
Прикрепленное изображение
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
glykoman2010
сообщение 1.4.2017, 9:02
Сообщение #3


**

Neophyte
Сообщений: 10
Регистрация: 1.4.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.417
Возраст: 22



Цитата(cirus @ 1.4.2017, 2:12) *

Область поиска неправильно указана. Получается полоска шириной в 1 пиксель.
Прикрепленное изображение

моя оплошность, код не измененный кинул. я по прямоугольнику искал
Код

set #a findimage (150 90 1150 690 (\gold2.bmp) %arr 2 60 -1)
set #w size (%arr) // получим число найденных картинок
msg Найдено картинок: #w
for #i 1 #w
   set #x %arr [#i 1]
   set #y %arr [#i 2]
   msg картинка в координатах: #x #y
end_for


через другой кликер эту картинку ищет и нажимаем, но он процессор загружает...


Эскизы прикрепленных изображений
Прикрепленное изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
glykoman2010
сообщение 1.4.2017, 13:58
Сообщение #4


**

Neophyte
Сообщений: 10
Регистрация: 1.4.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.417
Возраст: 22



немного пошаманив получилось вот такое:
Код

set #handle FindWindow(460808)
set #startX 150
set #startY 90
set #endX 1150
set #endY 690
set $path "D:\pilot\"
set %cash[1] gold2
// будем искать картинку
set #a findimage (#startX #startY #endX #endY ($path%cash[1].bmp) %crds #handle 2 70 20 5)
if #a > 0
  msg Картинка в координатах X= %crds[1 1] Y= %crds[1 2]. жмем...
  left %crds[1 1] %crds[1 2] #handle // жмем
else
  msg Ничего не найдено
end_if


в логах пишет, что находит координаты, а дальше ступор, так как даже не кликает, если и находит действительно картинку
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
glykoman2010
сообщение 1.4.2017, 18:57
Сообщение #5


**

Neophyte
Сообщений: 10
Регистрация: 1.4.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.417
Возраст: 22



после половины суток разбирательства, вернулся к старой версии скрипта:
Код
set #a findimage (140 130 1150 690 (\gold.bmp) %arr 2 70 -1 18 abs )
//msg #a
set #w size (%arr) // получим число найденных картинок
//msg Найдено картинок: #w
for #i 1 #w
   set #x %arr [#i 1]
   set #y %arr [#i 2]
   kleft %arr[1 1] %arr[1 2] // жмем
end_for


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


**********

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



Цитата
может проблема в виндовс 10? и в том, что приложение с магазина?

Нет.
Цитата
#handle 2 70 20 5

Тут ошибка, максимально может быть 4 параметра. #handle 2 - оставляйте 2, #handle это для поиска в перекрытом окне.
Что пишет в сообщении msg #a?
Картинки дров (или что там) разные. Увеличьте картинку из первого поста, и посмотрите.
Попробуйте уменьшить точность и увеличить отклонение по цвету.
Код
set #a findimage (140 130 1150 690 (\gold2.bmp) %arr 2 70 -1 10)


Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
glykoman2010
сообщение 1.4.2017, 19:35
Сообщение #7


**

Neophyte
Сообщений: 10
Регистрация: 1.4.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.417
Возраст: 22



Цитата(cirus @ 1.4.2017, 19:12) *

Нет.

Тут ошибка, максимально может быть 4 параметра. #handle 2 - оставляйте 2, #handle это для поиска в перекрытом окне.
Что пишет в сообщении msg #a?
Картинки дров (или что там) разные. Увеличьте картинку из первого поста, и посмотрите.
Попробуйте уменьшить точность и увеличить отклонение по цвету.
Код
set #a findimage (140 130 1150 690 (\gold2.bmp) %arr 2 70 -1 10)


выше отредактировал сообщение и код, извиняюсь.

сделал так:
Код
set #a findimage (140 130 1150 690 (\gold.bmp) %arr 2 70 -1 18 abs )
//msg #a
set #w size (%arr) // получим число найденных картинок
//msg Найдено картинок: #w
for #i 1 #w
   set #x %arr [#i 1]
   set #y %arr [#i 2]
   kleft %arr[1 1] %arr[1 2] // жмем
end_for


все ищет и нажимает, только после нажатия (сбора ресурсов) еще несколько раз прокликивает?

и еще вопрос как сделать так чтоб через 15 мин выаолнения выполнялось такое:
1) перевести мышь в координаты Х У
2) зажать левую кнопку мыши
3) перевести мышь в координаты Х+90 У+90
4) перевести мышь в координаты Х У
5) разжать кнопку мыши и продрлжить выполнение скрипта на поиск картинки.

картинку золота и оришинал прилагаю ниже.


Прикрепленные файлы
Прикрепленный файл  1.bmp ( 3 мегабайт ) Кол-во скачиваний: 394
Прикрепленный файл  gold.bmp ( 534 байт ) Кол-во скачиваний: 254
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 1.4.2017, 19:49
Сообщение #8


**********

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



Код
for #i 1 #w
   set #x %arr [#i 1]
   set #y %arr [#i 2]
   kleft %arr[1 1] %arr[1 2] // жмем
end_for

Нажать нужно на все картинки?
Код
for #i 1 #w
   kleft %arr[#i 1] %arr[#i 2] // жмем
end_for

Цитата
2 70 -1 18

18 это большой % отклонения, скорее всего находится картинок больше, чем есть на самом деле. Попробуйте уменьшить % отклонения или увеличить точность поиска.
Код
log #a     // количество найденных картинок

А лучше сделайте картинку такую:
Прикрепленный файл  gold.bmp ( 4,78 килобайт ) Кол-во скачиваний: 437

Цитата
и еще вопрос как сделать так чтоб через 15 мин выаолнения выполнялось такое:
1) перевести мышь в координаты Х У
2) зажать левую кнопку мыши
3) перевести мышь в координаты Х+90 У+90
4) перевести мышь в координаты Х У
5) разжать кнопку мыши и продрлжить выполнение скрипта на поиск картинки.

Код
wait 15m            // через 15 мин
move X Y           // 1) перевести мышь в координаты Х У, возможно без этого будет работать
kleft_down X Y   // 2) зажать левую кнопку мыши
wait 100
move X1 Y1   // 3) перевести мышь в координаты Х+90 У+90
wait 100
move X Y      // 4) перевести мышь в координаты Х У, возможно без этого будет работать
wait 100
kleft_up X Y    // 5) разжать кнопку мыши
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
glykoman2010
сообщение 2.4.2017, 13:31
Сообщение #9


**

Neophyte
Сообщений: 10
Регистрация: 1.4.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.417
Возраст: 22



Цитата(cirus @ 1.4.2017, 19:49) *

Код
wait 15m            // через 15 мин
move X Y           // 1) перевести мышь в координаты Х У, возможно без этого будет работать
kleft_down X Y   // 2) зажать левую кнопку мыши
wait 100
move X1 Y1   // 3) перевести мышь в координаты Х+90 У+90
wait 100
move X Y      // 4) перевести мышь в координаты Х У, возможно без этого будет работать
wait 100
kleft_up X Y    // 5) разжать кнопку мыши


сделал так пока для проверки

Код
set #handleWin findwindow (Pirates of Everseas)
set workwindow #handleWin
   wait 1s            // через ....
   move 660 400           // 1) перевести мышь в координаты Х У, возможно без этого будет работать
   kleft_down 660 400   // 2) зажать левую кнопку мыши
   wait 500
   move 800 600   // 3) перевести мышь в координаты Х+90 У+90
   wait 500
   move 660 400      // 4) перевести мышь в координаты Х У, возможно без этого будет работать
   wait 500
   left_up 660 400    // 5) разжать кнопку мыши
set #a findimage (140 130 1150 690 (\gold.bmp) %arr #handle 70 -1 18 abs )
set #w size (%arr) // получим число найденных картинок
log количество картинок #w
for #i 1 #w
   kleft %arr[#i 1] %arr[#i 2] #handle // жмем
end_for


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

Цитата

я тут подумал, все иконки ресурсов в черной рамке, так почему бы не искать рамку? Прикрепленный файл  zol.bmp ( 6,48 килобайт ) Кол-во скачиваний: 404
пробовал в паинте по картинке искать (раб область менял на paint соответственно) , но не находит. может у вас получиться подобрать пропорции точности?Прикрепленный файл  Новый_точечный_рисунок.bmp ( 3 мегабайт ) Кол-во скачиваний: 442

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


**********

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



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

Лучше рамку с белым фоном.
Прикрепленный файл  zol4.bmp ( 5,3 килобайт ) Кол-во скачиваний: 385

В пейнте находятся, но т. к. большой % погрешности по цвету находится больше картинок, чем есть на самом деле. Приходится лишние отсеивать.
код, тестил в paint
Код
set findoffsety 140  // смещение координаты Y (для теста в paint, для игры убрать или изменить на нужное значение)

set #a findimage (270, 142 1045, 651  (C:\zol4.bmp) %arr 2 70 -1 20)

if  #a > 0
    ////// блок отсеивания лишних координат, ничего не менять!!!
    set size(%array)
    set #z 1
    init_arr %array (#z) %arr [1 1] %arr [1 2]
    for #i 1 eval(size(%arr) - 1)
        set #break 0
        set #j #i + 1
        for #n 1 #z
            set #delta round(point_distance (%arr [#j 1] %arr [#j 2] %array [#n 1] %array [#n 2]))
            if  abs(#delta) < 10
                set #break 1
                break
            end_if
        end_for
        if  #break = 0
            set #z #z + 1
            init_arr %array (#z) %arr [#j 1] %arr [#j 2]
        end_if
    end_for
    ///////////

    ///// Координаты картинок содержатся в массиве %array
    for #i 1 size(%array)
        hint (12 clred %array [#i 1] %array [#i 2] (#i))
        wait 500
    end_for
end_if
end_script

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

Вместо kleft использовать left. Работает не везде.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
glykoman2010
сообщение 2.4.2017, 21:03
Сообщение #11


**

Neophyte
Сообщений: 10
Регистрация: 1.4.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.417
Возраст: 22



Цитата(cirus @ 2.4.2017, 15:17) *

Цитата
Лучше рамку с белым фоном.
Прикрепленный файл  zol4.bmp ( 5,3 килобайт ) Кол-во скачиваний: 385

В пейнте находятся, но т. к. большой % погрешности по цвету находится больше картинок, чем есть на самом деле. Приходится лишние отсеивать.

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



и, если можно, можно подробно расписать работу скрипта, особено где отсев идет?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 2.4.2017, 21:25
Сообщение #12


**********

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



Цитата
как из массива брать координаты и по ним тыкать?

Код
///// Координаты картинок содержатся в массиве %array
kleft %array [1 1] %array [1 2]   // первая картинка
kleft %array [2 1] %array [2 2]   // вторая картинка

Если нужно кликнуть по всем картинками:
Код
///// Координаты картинок содержатся в массиве %array
for #i 1 size(%array)
    kleft %array [#i 1] %array [#i 2]
    wait 500
end_for

Цитата
можно подробно расписать работу скрипта, особено где отсев идет?

В отсев нет смысла вникать. Нужно только добавить уничтожение массива.
Код
set size(%array)   // добавить эту строку
set #z 1

Если вкратце, есть массив с координатами картинок %arr, создаётся ещё один массив %array, в который записываются координаты только тех картинок, которые не находятся рядом друг с другом.
Можно вывести в лог всё что нашлось:
Код
set #a findimage (270, 142 1045, 651  (C:\zol4.bmp) %arr 2 70 -1 20)
if #a > 0
    for #i 1 size(%arr)
        log #i     %arr [#i 1] %arr [#i 2]
    end_for
end_if
end_script

Из-за большой погрешности в цвете и маленькой точности будет больше координат, чем картинок. Причём некоторые координаты будут отличаться всего на несколько пикселей, вот они и отсеиваются, остальные записываются в массив %array.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
glykoman2010
сообщение 3.4.2017, 0:22
Сообщение #13


**

Neophyte
Сообщений: 10
Регистрация: 1.4.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.417
Возраст: 22



Цитата(cirus @ 2.4.2017, 21:25) *




Вот, что получилось. Ни kleft_down , ни left_down не перетягивают. просто мышь зажимается, телепортируется в другое место, обратно и разжимается, а перетягивание картинки не происходит. через какую функцию запртить ему кликать на других окнах?
Код
   wait 5s            // через ....
   move 660 400           // 1) перевести мышь в координаты Х У, возможно без этого будет работать
   kleft_down 660 400   // 2) зажать левую кнопку мыши
   wait 500
   move 800 600   // 3) перевести мышь в координаты Х+90 У+90
   wait 500
   move 660 400      // 4) перевести мышь в координаты Х У, возможно без этого будет работать
   wait 500
   kleft_up 660 400    // 5) разжать кнопку мыши
set #a findimage (140 130 1150 690 (\gold.bmp) %arr 2 70 -1 18 abs )
if  #a > 0
    ////// блок отсеивания лишних координат, ничего не менять!!!
    set size(%array)
    set #z 1
    init_arr %array (#z) %arr [1 1] %arr [1 2]
    for #i 1 eval(size(%arr) - 1)
        set #break 0
        set #j #i + 1
        for #n 1 #z
            set #delta round(point_distance (%arr [#j 1] %arr [#j 2] %array [#n 1] %array [#n 2]))
            if  abs(#delta) < 10
                set #break 1
                break
            end_if
        end_for
        if  #break = 0
            set #z #z + 1
            init_arr %array (#z) %arr [#j 1] %arr [#j 2]
        end_if
    end_for
    ///////////

    ///// Координаты картинок содержатся в массиве %array
    for #i 1 size(%array)
        kleft %array [#i 1] %array [#i 2]
        wait 500
    end_for
end_if
//end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.4.2017, 0:59
Сообщение #14


**********

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



Цитата
через какую функцию запртить ему кликать на других окнах?

Что имеется ввиду, не делать клик если окно с игрой не активно или поднять окно с игрой на передний план и тогда сделать клик?
На счёт перетягивания не знаю что там.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
glykoman2010
сообщение 4.4.2017, 17:22
Сообщение #15


**

Neophyte
Сообщений: 10
Регистрация: 1.4.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.417
Возраст: 22



Цитата(cirus @ 3.4.2017, 0:59) *

Что имеется ввиду, не делать клик если окно с игрой не активно или поднять окно с игрой на передний план и тогда сделать клик?
На счёт перетягивания не знаю что там.

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


**********

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



Если клики типа left не работают, то только запускать игру и пилот на виртуалке.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
glykoman2010
сообщение 5.4.2017, 16:25
Сообщение #17


**

Neophyte
Сообщений: 10
Регистрация: 1.4.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.417
Возраст: 22



Цитата(cirus @ 5.4.2017, 1:58) *

Если клики типа left не работают, то только запускать игру и пилот на виртуалке.

kleft работает, но не привязывается к окну. клики не только на это окно действуют.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 6.4.2017, 2:27
Сообщение #18


**********

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



kleft работает только в активном окне. Какое окно на переднем плане, в то и будет кликать.
left может кликать в перекрытом, но работает не во всех приложениях.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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