Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: GetHigh on March 19, 2014, 04:09:45 PM

Title: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: GetHigh on March 19, 2014, 04:09:45 PM
Доброго времени суток, друзья!

Вообще с этой программой меня познакомил друг, когда появилась необходимость перенести базу клиентов в программу, которую мы вводим на работе.
Всего за 16 часов, было внесена база из 1000 клиентов.

Мне очень понравились возможности Clickermann. Автору, огромная благодарность.
Вот захотелось освоить её потихоньку.
Взял за основу одну браузерную игрушку, в которую играю пол-года. Написал скрипт, всё работает, ресурсы собираются, войска строятся, потом нападают на врагов, тырят ресурсы.
Но, за ночь нафармил, лишь такое количество ресурсов, которое можно за одно нападение сделать. Хорошо, хоть в минус не ушел.
А всё почему?  Да, потому что, нападаю я на кого попало: ПРИМЕР: (есть кнопка переключения на следующего врага) у него может быть и 1000 ресурсов, а у другого целых 150000 ресурсов.

Описание моей задачи.
1) Clickermann делает скрин определённой области экрана с этими вашими colormod(6) (и именно определенной, потому что вверху экрана такая же картинка с моими ресурсами)   ::) (http://upload.akusherstvo.ru/image617678.jpg)
2) Распознаёт (я так понимаю, нужно будет нарезать все циферки и т.д. и т.п. разжуйте пожалуйста) Или может настроить распознавание в файн ридере? То тогда нужно только скрипт на 3 пункт:
3) Если значение меньше 40000 (ресурсов), то не - нападать и щелкать в определенное место один раз и снова анализ определённой области,
если больше - то грабить корованы.



Если поможете разобраться, у меня ещё есть идея, как награбить больше ресурсов:
Например чтобы скрипт делал скрин уровня врага. Они бывают двух видов, красный означает что у врага премиум аккаунт (http://upload.akusherstvo.ru/image617685.jpg) и (http://upload.akusherstvo.ru/image617687.jpg)

Вообщем хочу искать определенных врагов которые будут не старше 60 уровня, при этом будут иметь более 40000 ресурсов.

Заранее спасибо! Сильно надеюсь на вашу, помощь!
Title: Re: Помогите разобраться!
Post by: aden on March 19, 2014, 05:27:10 PM
Предлагаю плясать от количества цифр в числе ресурсов и длине строки .
если строка с количеством ресурсов не центрируется а выравнивается по левому краю то искать белый пиксель в области где появляется 5 цифра в ресурсах тобиш на 9999 ресурсов не нападет а на 10000 или 10001 уже нападет )


agclient не предлагаю изза его платности
Title: Re: Помогите разобраться!
Post by: GetHigh on March 19, 2014, 05:29:12 PM
Предлагаю плясать от количества цифр в числе ресурсов и длине строки .
если строка с количеством ресурсов не центрируется а выравнивается по левому краю то искать белый пиксель в области где появляется 5 цифра в ресурсах тобиш на 9999 ресурсов не нападет а на 10000 или 10001 уже нападет )


agclient не предлагаю из-за его платности
Как вариант, спасибо!
Title: Re: Помогите разобраться! Анализ двух картинок, распознавание цифр
Post by: aden on March 19, 2014, 05:32:26 PM
только учитывай что шрифт не моноширинный как я вижу поэтому 11111 будет уже(от слова "узко") чем 00000
Title: Re: Помогите разобраться! Анализ двух картинок, распознавание цифр
Post by: GetHigh on March 19, 2014, 05:45:56 PM
только учитывай что шрифт не моноширинный как я вижу поэтому 11111 будет уже(от слова "узко") чем 00000

Учту, поставлю подальше, есть большая вероятность нарваться на заброшенную базу, где много ресурсов больше 100000
Title: Re: Помогите разобраться!
Post by: GetHigh on March 20, 2014, 01:00:58 AM
Предлагаю плясать от количества цифр в числе ресурсов и длине строки .
если строка с количеством ресурсов не центрируется а выравнивается по левому краю то искать белый пиксель в области где появляется 5 цифра в ресурсах тобиш на 9999 ресурсов не нападет а на 10000 или 10001 уже нападет )


agclient не предлагаю из-за его платности
Как вариант, спасибо!

РАБОТАЕТ!!!11

Причем выяснилось, что если игрок не состоит в клане, то его ресурсы смещаются вверх и не анализируются, это хорошо, т.к. у них частенько мало ресурсов)
Title: Re: Помогите разобраться! Анализ двух картинок, распознавание цифр
Post by: GetHigh on March 20, 2014, 11:31:52 AM
Вопрос об анализе пикселя в заданном месте решён, теперь осталось ещё сделать связку с уровнем героя, для принятия верного решения. т.к. нападение на игрока выше 70 уровня не принесет большого количества ресурсов, защита базы на таком уровне слишком велика.
Жду ваших предложений как это сделать.

ЗАДАЧА:
Анализ пикселя в заданной точке (решен)
Анализ картинки с уровнем героя и определение его уровня.
Осуществлять нападение если пиксель будет найден в определенном месте при условии что уровень врага не выше  60.
Как сделать такую связку?
Title: Re: Помогите разобраться! Анализ двух картинок, распознавание цифр
Post by: aden on March 20, 2014, 11:41:50 AM
левую половину щита с первой цифрой лвла игрока(7*,8*,9*,10*,11*) и сравниваешь с ней если совпало не нападаешь )
Title: Re: Помогите разобраться! Анализ двух картинок, распознавание цифр
Post by: GetHigh on March 20, 2014, 11:44:41 AM
левую половину щита с первой цифрой лвла игрока(7*,8*,9*,10*,11*) и сравниваешь с ней если совпало не нападаешь )
Идея, спасибо!
Вначале анализирую наличие пикселя, а потом уже уровень. Только я не разобрался как задать область поиска для сравнения маленькой картинки "половины щита"
Title: Re: Помогите разобраться! Анализ двух картинок, распознавание цифр
Post by: aden on March 20, 2014, 12:43:40 PM
if_picture_in(x1,y1,x2,y2, somepic.bmp, -1, nn%)
//совпало
//что нибудь делаем
else
// не совпало
end_if
Title: Re: Помогите разобраться! Анализ двух картинок, распознавание цифр
Post by: GetHigh on March 20, 2014, 12:49:16 PM
if_picture_in(x1,y1,x2,y2, somepic.bmp, -1, nn%)
//совпало
//что нибудь делаем
else
// не совпало
end_if

Всё понятно, кроме -1, nn% за что отвечают?
Title: Re: Помогите разобраться! Анализ двух картинок, распознавание цифр
Post by: GetHigh on March 20, 2014, 01:10:45 PM
if_picture_in(x1,y1,x2,y2, somepic.bmp, -1, nn%)
//совпало
//что нибудь делаем
else
// не совпало
end_if

getscreen
colormode (6)
if_pixel_in(864, 300, $_xmax, $_ymax, 14654614) //нашёл пиксель в определенной точке (у меня работало и причем отличные цели находило с нужным количеством ресов)
if_picture_in(x1,y1,x2,y2, 3.bmp, -1, nn%)  // игрок после 30 уровня
// нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
else
// Ищем другую цель
end_if   // конец условия
getscreen
colormode (6)
if_pixel_in(864, 300, $_xmax, $_ymax, 14654614)
if_picture_in(x1,y1,x2,y2, 4.bmp, -1, nn%)  // игрок после 40 уровня
// нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
else
// Ищем другую цель
end_if   // конец условия
getscreen
colormode (6)
if_pixel_in(864, 300, $_xmax, $_ymax, 14654614)
if_picture_in(x1,y1,x2,y2, 5.bmp, -1, nn%)  // игрок после 50 уровня
// нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
else   
// Ищем другую цель
end_if   // конец условия

Мудрить дальше не буду... как правильно сделать?
 
 
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: aden on March 20, 2014, 01:56:41 PM
прочитай справку в кликермане там каждая команда расписана
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: GetHigh on March 20, 2014, 03:37:51 PM
прочитай справку в кликермане там каждая команда расписана

Прочитал:

getscreen
colormode (6)
if_pixel_in(864, 300, $_xmax, $_ymax, 14654614)  //нашёл пиксель в определенной точке (у меня работало и причем отличные цели находило с нужным количеством ресов)
if_picture_in(x1,y1,x2,y2, 3.bmp, -1, nn%) | (x1,y1,x2,y2, 4.bmp, -1, nn%) | if_picture_in(x1,y1,x2,y2, 5.bmp, -1, nn%) // игроки после 30,40,50 уровня
// нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
else
// Ищем другую цель
end_if   // конец условия

Теперь верно?
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: aden on March 20, 2014, 03:50:50 PM
у тебя и до этого было правильно
if_picture_in(x1,y1,x2,y2, 5.bmp, -1, nn%)
-1 это цвет фона, в значении "-1" фон не задается

nn% это процент совпадения, искомой картинки

то есть при 50% он будет искать не точное соответствие а с отклонениями
при 1% может срабатывать практически на все подряд
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: Oraven on March 20, 2014, 03:53:31 PM
Судя по ереси которую ты тут пишешь, ты справку даже в глаза не видел.

Code: (clickermann) [Select]
getscreen
colormode (6)
if_pixel_in(864, 300, $_xmax, $_ymax, 14654614)
   if_picture_in(100,100,1000,700, "3.bmp", -1, 80)
      // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
   else
      if_picture_in(100,100,1000,700, "4.bmp", -1, 80)
         // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
      else
         if_picture_in(100,100,1000,700, "5.bmp", -1, 80)
            // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
         else
            // Ищем другую цель
         end_if
      end_if
   end_if
end_if
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: GetHigh on March 21, 2014, 01:44:43 AM
Судя по ереси которую ты тут пишешь, ты справку даже в глаза не видел.

Code: (clickermann) [Select]
getscreen
colormode (6)
if_pixel_in(864, 300, $_xmax, $_ymax, 14654614)
   if_picture_in(100,100,1000,700, "3.bmp", -1, 80)
      // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
   else
      if_picture_in(100,100,1000,700, "4.bmp", -1, 80)
         // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
      else
         if_picture_in(100,100,1000,700, "5.bmp", -1, 80)
            // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
         else
            // Ищем другую цель
         end_if
      end_if
   end_if
end_if

Спасибо, за внимание.
Протестировал три блока, все работают по отдельности.
Как теперь их объединить?

Code: (clickermann) [Select]
getscreen
COLORMODE(6, 10,10, 100,100)
WAIT(2)
if_picture_in(14,241,101,256,"Поражение1.bmp",-1,5) | (14,241,101,256,"Поражение2.bmp",-1,5) //при положительном результате ищем следующую цель (означает, что этот противник нам не подходит)
WAIT(3)
else
WAIT(3)
LCLICK(1274,217)  // Ищем другую цель
end_if   // конец условия




getscreen
COLORMODE(6, 10,10, 100,100)
if_pixel_in(80,147, 85, 150, 15006452)  //нашёл пиксель в определенной области (это хорошо, теперь нужно чтобы последующее условие, тоже совпало с этим, если нет, то необходимо начать всё сначала)
WAIT(3)
else
WAIT(3)
LCLICK(1278,219)    // Ищем другую цель
end_if   // конец условия




getscreen
COLORMODE(6)
WAIT(2)
if_picture_in(8,99,40,131,"42.bmp",-1,50) | (8,99,40,131,"43.bmp",-1,50) | (8,99,40,131,"44.bmp",-1,50) | (8,99,40,131,"45.bmp",-1,50) | (8,99,40,131,"47.bmp",-1,50) | (8,99,40,131,"48.bmp",-1,50) | (8,99,40,131,"49.bmp",-1,50) | (8,99,40,131,"50.bmp",-1,50) | (8,99,40,131,"51.bmp",-1,50) | (8,99,40,131,"52.bmp",-1,50) | (8,99,40,131,"53.bmp",-1,50) | (8,99,40,131,"54.bmp",-1,50) | (8,99,40,131,"55.bmp",-1,50) | (8,99,40,131,"57.bmp",-1,50) | (8,99,40,131,"58.bmp",-1,50) | (8,99,40,131,"60.bmp",-1,50)// игроки после 43-60 уровня
WAIT(4)
 // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
else
WAIT(5)
LCLICK(1274,217)  // Ищем другую цель
end_if   // конец условия

Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: Vint on March 21, 2014, 07:45:37 AM
Спасибо, за внимание.
Протестировал три блока, все работают по отдельности.
Как теперь их объединить?

Code: (clickermann) [Select]
getscreen
COLORMODE(6, 10,10, 100,100)
WAIT(2)
if_picture_in(14,241,101,256,"Поражение1.bmp",-1,5) | (14,241,101,256,"Поражение2.bmp",-1,5) //при положительном результате ищем следующую цель (означает, что этот противник нам не подходит)
WAIT(3)
else
WAIT(3)
LCLICK(1274,217)  // Ищем другую цель
end_if   // конец условия




getscreen
COLORMODE(6, 10,10, 100,100)
if_pixel_in(80,147, 85, 150, 15006452)  //нашёл пиксель в определенной области (это хорошо, теперь нужно чтобы последующее условие, тоже совпало с этим, если нет, то необходимо начать всё сначала)
WAIT(3)
else
WAIT(3)
LCLICK(1278,219)    // Ищем другую цель
end_if   // конец условия




getscreen
COLORMODE(6)
WAIT(2)
if_picture_in(8,99,40,131,"42.bmp",-1,50) | (8,99,40,131,"43.bmp",-1,50) | (8,99,40,131,"44.bmp",-1,50) | (8,99,40,131,"45.bmp",-1,50) | (8,99,40,131,"47.bmp",-1,50) | (8,99,40,131,"48.bmp",-1,50) | (8,99,40,131,"49.bmp",-1,50) | (8,99,40,131,"50.bmp",-1,50) | (8,99,40,131,"51.bmp",-1,50) | (8,99,40,131,"52.bmp",-1,50) | (8,99,40,131,"53.bmp",-1,50) | (8,99,40,131,"54.bmp",-1,50) | (8,99,40,131,"55.bmp",-1,50) | (8,99,40,131,"57.bmp",-1,50) | (8,99,40,131,"58.bmp",-1,50) | (8,99,40,131,"60.bmp",-1,50)// игроки после 43-60 уровня
WAIT(4)
 // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
else
WAIT(5)
LCLICK(1274,217)  // Ищем другую цель
end_if   // конец условия

Ничего у тебя не работало. Точнее искало только одну.
Функция if_picture_in принимает только один комплект параметров для поиска 1 картинки. Логические операторы не поддерживаются (по крайней мере пока).
Для поиска 2-х и более альтернативных картинок нужно использовать вложенные конструкции, как показал Андрей. Или использовать последовательный поиск. Всё зависит от задачи и реализации.
Запомни: одна картинка - один if_picture_in......end_if с одним набором параметров (x, y, x2, y2, "file", [bgcolor], [currency]) ВСЁ.
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: GetHigh on March 21, 2014, 10:37:53 AM
Спасибо, за внимание.
Протестировал три блока, все работают по отдельности.
Как теперь их объединить?

Code: (clickermann) [Select]
getscreen
COLORMODE(6, 10,10, 100,100)
WAIT(2)
if_picture_in(14,241,101,256,"Поражение1.bmp",-1,5) | (14,241,101,256,"Поражение2.bmp",-1,5) //при положительном результате ищем следующую цель (означает, что этот противник нам не подходит)
WAIT(3)
else
WAIT(3)
LCLICK(1274,217)  // Ищем другую цель
end_if   // конец условия




getscreen
COLORMODE(6, 10,10, 100,100)
if_pixel_in(80,147, 85, 150, 15006452)  //нашёл пиксель в определенной области (это хорошо, теперь нужно чтобы последующее условие, тоже совпало с этим, если нет, то необходимо начать всё сначала)
WAIT(3)
else
WAIT(3)
LCLICK(1278,219)    // Ищем другую цель
end_if   // конец условия




getscreen
COLORMODE(6)
WAIT(2)
if_picture_in(8,99,40,131,"42.bmp",-1,50) | (8,99,40,131,"43.bmp",-1,50) | (8,99,40,131,"44.bmp",-1,50) | (8,99,40,131,"45.bmp",-1,50) | (8,99,40,131,"47.bmp",-1,50) | (8,99,40,131,"48.bmp",-1,50) | (8,99,40,131,"49.bmp",-1,50) | (8,99,40,131,"50.bmp",-1,50) | (8,99,40,131,"51.bmp",-1,50) | (8,99,40,131,"52.bmp",-1,50) | (8,99,40,131,"53.bmp",-1,50) | (8,99,40,131,"54.bmp",-1,50) | (8,99,40,131,"55.bmp",-1,50) | (8,99,40,131,"57.bmp",-1,50) | (8,99,40,131,"58.bmp",-1,50) | (8,99,40,131,"60.bmp",-1,50)// игроки после 43-60 уровня
WAIT(4)
 // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
else
WAIT(5)
LCLICK(1274,217)  // Ищем другую цель
end_if   // конец условия

Ничего у тебя не работало. Точнее искало только одну.
Функция if_picture_in принимает только один комплект параметров для поиска 1 картинки. Логические операторы не поддерживаются (по крайней мере пока).
Для поиска 2-х и более альтернативных картинок нужно использовать вложенные конструкции, как показал Андрей. Или использовать последовательный поиск. Всё зависит от задачи и реализации.
Запомни: одна картинка - один if_picture_in......end_if с одним набором параметров (x, y, x2, y2, "file", [bgcolor], [currency]) ВСЁ.

Спасибо, по этому вопросу всё уяснил. Исправлю.
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: GetHigh on March 21, 2014, 03:30:35 PM
Судя по ереси которую ты тут пишешь, ты справку даже в глаза не видел.

Code: (clickermann) [Select]
getscreen
colormode (6)
if_pixel_in(864, 300, $_xmax, $_ymax, 14654614)
   if_picture_in(100,100,1000,700, "3.bmp", -1, 80)
      // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
   else
      if_picture_in(100,100,1000,700, "4.bmp", -1, 80)
         // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
      else
         if_picture_in(100,100,1000,700, "5.bmp", -1, 80)
            // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
         else
            // Ищем другую цель
         end_if
      end_if
   end_if
end_if

Исправил. Циферки добавил, что легче было проверять.

Code: (clickermann) [Select]
getscreen
colormode (6)
1)if_picture_in(14,241,101,256,"Поражение1.bmp",-1,5)  // игрок состоит в клане,
// это для нас фигово, ищем дальше
LCLICK(1278,219)    // Ищем другую цель
WAIT(2)
1)else
2)if_pixel_in(80,147, 85, 150, 15006452)  //нашёл пиксель в области где у
// игрока много ресурсов (это хорошо) дальше ищем по уровню противника
3)if_picture_in(8,99,40,131,"42.bmp",-1,50)  // Уровень подходящий
// , можно нападать
// нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
3)else
      4)if_picture_in(8,99,40,131,"43.bmp",-1,50)
          // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
      4)else
5)if_picture_in(8,99,40,131,"44.bmp",-1,50)
            // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
5)else
6)if_picture_in(8,99,40,131,"45.bmp",-1,50)
            // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
6)else
7)if_picture_in(8,99,40,131,"47.bmp",-1,50)
            // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
7)else
8)if_picture_in(8,99,40,131,"48.bmp",-1,50)
            // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
8)else
9)if_picture_in(8,99,40,131,"49.bmp",-1,50)
            // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
9)else
10)if_picture_in(8,99,40,131,"50.bmp",-1,50)
            // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
10)else
11)if_picture_in(8,99,40,131,"51.bmp",-1,50)
            // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
11)else
12)if_picture_in(8,99,40,131,"52.bmp",-1,50)
            // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
12)else           
13)if_picture_in(8,99,40,131,"53.bmp",-1,50)
            // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
13)else
14)if_picture_in(8,99,40,131,"54.bmp",-1,50)
            // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
14)else
15)if_picture_in(8,99,40,131,"55.bmp",-1,50)
            // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
15)else
16)if_picture_in(8,99,40,131,"57.bmp",-1,50)
            // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
16)else
17)if_picture_in(8,99,40,131,"58.bmp",-1,50)
            // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
17)else
18)if_picture_in(8,99,40,131,"60.bmp",-1,50)
            // нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу
18)else
2)else
2)LCLICK(1278,219)    // Игрок без клана - хорошо, У игрока много ресурсов -
// хорошо, НО!11 уровень противника нам не подходит - Ищем другую цель
18)end_if
17)end_if
16)end_if
15)end_if
14)end_if
13)end_if
12)end_if
11)end_if
10)end_if
9)end_if
8)end_if
7)end_if
6)end_if
5)end_if
4)end_if
3)end_if
2)end_if
1)end_if

Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: aden on March 21, 2014, 03:51:35 PM
жесть конечно

еще после
Code: (clickermann) [Select]
//дальше ищем по уровню противникасунь
Code: (clickermann) [Select]
getscreen
и можно цикл for применить для смены лвл

Code: (clickermann) [Select]
$bmp=.bmp
$num=43
$lvl=strconcat($num,$bmp)
for($num,$num<60)
if_picture_in(x,y,x2,y2,-1,$lvl)
// лабуды лабудай
end_cyc
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: GetHigh on March 21, 2014, 04:10:31 PM
жесть конечно

еще после
Code: (clickermann) [Select]
//дальше ищем по уровню противникасунь
Code: (clickermann) [Select]
getscreen
и можно цикл for применить для смены лвл

Code: (clickermann) [Select]
$bmp=.bmp
$num=43
$lvl=strconcat($num,$bmp)
for($num,$num<60)
if_picture_in(x,y,x2,y2,-1,$lvl)
// лабуды лабудай
end_cyc

Здорово, надо попробовать. только, вот нету пока картинок 46, 56, 59 уровня.

И всё никак не догоню, зачем GETSCREEN добавлять? Ведь мы будем всеми тремя блоками обрабатывать одно и то же изображение. Если вдруг, одно из них не совпало, возвращаемся к началу и там делается новый скрин...

Code: (clickermann) [Select]
getscreen
colormode (6)
1)if_picture_in(14,241,101,256,"Поражение1.bmp",-1,5)  // игрок состоит в клане, это плохо, ищем другую цель
LCLICK(1278,219)    // Выбираем другого противника
WAIT(2)
1)else
2)if_pixel_in(80,147, 85, 150, 15006452)  //íНашел писель в области ресурсов - это хорошо
3)$bmp=.bmp
$num=43
$lvl=strconcat($num,$bmp)
for($num,$num<60)
if_picture_in(8,99,40,131,$lvl,-1,50)
               3)// Нападаем высаживаем войска, возвращаемся на базу
               3)end_cyc
        2)else
2)LCLICK(1278,219)    // Выбираем другого противника
        2)end_if
1)end_if

Осталось выяснить: Кавычки в названии "$lvl" учитывает ли цикл FOR, а так же процент совпадения - работает в таком случае?
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: Vint on March 21, 2014, 05:19:05 PM
работает всё. Только написано чуть неправильно.

Code: (clickermann) [Select]
$num=43
for($num,$num<60)
if_picture_in(x, y, x2, y2, strconcat($num,".bmp"), -1,90)
// лабуды лабудай
end_cyc
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: GetHigh on March 21, 2014, 05:46:04 PM
работает всё. Только написано чуть неправильно.

Code: (clickermann) [Select]
$num=43
for($num,$num<60)
if_picture_in(x, y, x2, y2, strconcat($num,".bmp"), -1,90)
// лабуды лабудай
end_cyc

Вот, теперь понятно, Спасибо!
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: Atas on March 21, 2014, 06:02:32 PM
Всем привет.  :)
Второй день слежу за этой темой и тоже захотелось добавить пример скрипта. Состряпал пока был на работе. Это модуль бота который отвечает за определение уровня противника. Ну и просто, как вариант, сравнения множества картинок с использованием массива (где-то тут на форуме подсмотрел эти приёмы).
Использовал тестовую версию Clickermann v4.10 (в других версиях работать не будет).
Скачать его можно в теме [Alpha/Beta Testing]: http://crapware.aidf.org/forum/index.php?topic=356.msg4989#msg4989

Картинки с лвл персонажей должны быть естественно переделаны с использованием нового режима COLORMODE (8) (восемь).
COLORMODE(6), который в шаблонах редактора приведен в качестве примера, слабоват будет для распознавания текста в этой игре.
Тут хороший пример как сделать снимки всего экрана сразу во всех режимах: http://crapware.aidf.org/forum/index.php?topic=276.msg2329#msg2329
Теперь есть и 8 режим. Спасибо Johnny!  :)
Точность совпадения 50, тоже маловата, с колормодом 8, точность будет намного выше.

Code: (clickermann) [Select]

// Названия картинок имеют вид - "xx.bmp"
// $lvl[] - массив содержащий названия картинок с уровнями целей
// $index - номер ячейки массива, в которой хранится название картинки (число)
// В данном примере номера ячеек массива совпадают с именами картинок


FOR($index=42, $index < 61) // Загоняем названия картинок в массив (один раз при запуске сценария)
   $lvl[$index] = STRCONCAT($index, ".bmp") // Формируем имя картинки (строка) и помещаем его в ячейку массива
END_CYC

//--------------------------------

scan_target: // Метка для последующих обращений к этому разделу, если будем использовать GOTO(), а не SUB() или INCLUDE

GETSCREEN
COLORMODE(8) // Максимальный уровень цветокоррекции (чтобы увеличить точность совпадения с образцом)

FOR($index=42, $index < 61) // Ищем цели с 42 по 60 уровень
   IF_PICTURE_IN (8,99, 40,131, $lvl[$index], -1, 100) // Никакой цвет не игнорируем и подбираем точность совпадения от 100%
      GOTO(attack) // Картинка совпала - выпрыгиваем из цикла (оставшиеся картинки проверять НЕ надо)
   END_IF
END_CYC

GOTO(find_target) // Сюда можно попасть только если ни одна картинка не совпала, ищем другую цель

//--------------------------------

attack:
// Нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу


//--------------------------------

find_target:
// Ищем другую цель

Конечно всё это только пример и можно всё сильно упростить. Мне кажется, что достаточно было бы анализировать только первую цифру в уровне врага. Например, на героев у которых первая цифра 2, 3, 4 или 5, нападаем, а на тех у кого 6 и больше, не нападаем. На цифру 1 тоже не нападаем, и не только потому, что маленьких обижать не хорошо, но и потому, что этот враг может оказаться 100+ лвл.  :o
Плизз поправьте, если что не так. Сам не тестил, только теория.
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: Oraven on March 21, 2014, 06:12:39 PM
Из циклов выпрыгивать по GOTO не рекомендуется!
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: aden on March 21, 2014, 06:30:49 PM
Из циклов выпрыгивать по GOTO не рекомендуется!

помню что где поднимался этот вопрос а решение не помню
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: Atas on March 21, 2014, 06:32:03 PM
Oraven спасибо за поправку, я только учусь мне важно мнение тех кто знает больше. :)
Кстати, специально не использовал в своем скрипте подпрограмму SUB(), только ради того, чтобы "выпрыгнуть" в нужном месте и в нужное время, и не выполнять в сценарии лишних действий (для ускорения). И перед этим заглядывал в справку "Справка по языку сценариев; актуально для версии: 4.9 (build 004); дата сборки: 28.01.2014" -> "Основные конструкции". Для циклов FOR и WHILE нет предостережений на использование GOTO. Раньше вроде было, но времена меняются. Вообще стараюсь использовать всё что возможно и, если это работает, то почему бы и нет? :)
Спасибо.
P.S. Так же наслышан, что у программистов, правилом хорошего тона считается НЕ использовать GOTO. Я не программист... ;)
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: GetHigh on March 21, 2014, 07:12:54 PM
Всем привет.  :)
Второй день слежу за этой темой и тоже захотелось добавить пример скрипта. Состряпал пока был на работе. Это модуль бота который отвечает за определение уровня противника. Ну и просто, как вариант, сравнения множества картинок с использованием массива (где-то тут на форуме подсмотрел эти приёмы).
Использовал тестовую версию Clickermann v4.10 (в других версиях работать не будет).
Скачать его можно в теме [Alpha/Beta Testing]: http://crapware.aidf.org/forum/index.php?topic=356.msg4989#msg4989

Картинки с лвл персонажей должны быть естественно переделаны с использованием нового режима COLORMODE (8) (восемь).
COLORMODE(6), который в шаблонах редактора приведен в качестве примера, слабоват будет для распознавания текста в этой игре.
Тут хороший пример как сделать снимки всего экрана сразу во всех режимах: http://crapware.aidf.org/forum/index.php?topic=276.msg2329#msg2329
Теперь есть и 8 режим. Спасибо Johnny!  :)
Точность совпадения 50, тоже маловата, с колормодом 8, точность будет намного выше.

Code: (clickermann) [Select]

// Названия картинок имеют вид - "xx.bmp"
// $lvl[] - массив содержащий названия картинок с уровнями целей
// $index - номер ячейки массива, в которой хранится название картинки (число)
// В данном примере номера ячеек массива совпадают с именами картинок


FOR($index=42, $index < 61) // Загоняем названия картинок в массив (один раз при запуске сценария)
   $lvl[$index] = STRCONCAT($index, ".bmp") // Формируем имя картинки (строка) и помещаем его в ячейку массива
END_CYC

//--------------------------------

scan_target: // Метка для последующих обращений к этому разделу, если будем использовать GOTO(), а не SUB() или INCLUDE

GETSCREEN
COLORMODE(8) // Максимальный уровень цветокоррекции (чтобы увеличить точность совпадения с образцом)

FOR($index=42, $index < 61) // Ищем цели с 42 по 60 уровень
   IF_PICTURE_IN (8,99, 40,131, $lvl[$index], -1, 100) // Никакой цвет не игнорируем и подбираем точность совпадения от 100%
      GOTO(attack) // Картинка совпала - выпрыгиваем из цикла (оставшиеся картинки проверять НЕ надо)
   END_IF
END_CYC

GOTO(find_target) // Сюда можно попасть только если ни одна картинка не совпала, ищем другую цель

//--------------------------------

attack:
// Нападаем, высаживаем войска, заканчиваем бой возвращаемся на базу


//--------------------------------

find_target:
// Ищем другую цель

Конечно всё это только пример и можно всё сильно упростить. Мне кажется, что достаточно было бы анализировать только первую цифру в уровне врага. Например, на героев у которых первая цифра 2, 3, 4 или 5, нападаем, а на тех у кого 6 и больше, не нападаем. На цифру 1 тоже не нападаем, и не только потому, что маленьких обижать не хорошо, но и потому, что этот враг может оказаться 100+ лвл.  :o
Плизз поправьте, если что не так. Сам не тестил, только теория.


Здорово, тоже интересный способ. Только, мне хочется использовать оригинальную и последнюю версию программы.
Вообще, ещё месяц назад, я и понятия не имел, что такое скрипт и с чем его едят.
Оказывается, это очень интересно. Может на курсы какие записаться, что сейчас модно в мире? :)

А ещё мне оказалось проще написать скрипт, который исправляет проблему с принтером на компе у администраторов, ну в смысле когда он перестает печатать, чем объяснить всем пяти админам в блузках. Они просто жмут альт+а и вся любовь.

И вообще классно, что тут так активно помогают.
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: Atas on March 21, 2014, 07:54:11 PM
Quote
Только, мне хочется использовать оригинальную и последнюю версию программы.

Вот тут самая оригинальная и самая-самая последняя версия Clickermann v4.10, прямо из рук СОЗДАТЕЛЯ.
Такая новая, что только готовится к выпуску. :)
http://crapware.aidf.org/forum/index.php?topic=356.msg4989#msg4989 (http://crapware.aidf.org/forum/index.php?topic=356.msg4989#msg4989)
Качаем, тестим, сообщаем об ошибках.

Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: Vint on March 21, 2014, 09:02:23 PM
помню что где поднимался этот вопрос а решение не помню
Вместо GOTO нужно сделать, чтобы условие цикла перестало быть верным. В данном случае, например, $index =100
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: aden on March 21, 2014, 09:20:11 PM
помню что где поднимался этот вопрос а решение не помню
Вместо GOTO нужно сделать, чтобы условие цикла перестало быть верным. В данном случае, например, $index =100

запомним костыль думал есть команда досрочного завершения цикла
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: Vint on March 22, 2014, 10:44:14 AM
запомним костыль думал есть команда досрочного завершения цикла
Просили давно continue и break с параметром.
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: GetHigh on March 23, 2014, 10:31:27 PM
Тэйкинг фор! Нид асистэнс!
Не могу заставить работать цикличность выполнения поиска по пикселю в определенной области.
Т.е. все что после end_if должно воспроизводится, если найден пиксель. Если не найден, ищем следующую цель. Затем снова ищем пиксель в заданной области.

Че только не пробовал...пол дня потратил

Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
WAIT(4)
IF_PIXEL_IN(88,171, 93,201, 16777215)  //Нашел пиксель в области ресурсов - это хорошо
WAIT(10)
ELSE
LCLICK(1278,212)      // Выбираем другого противника
WAIT(2)
GETSCREEN
COLORMODE(6)
END_IF                   
WAIT(1)
SOUND("DeskBell.wav")
WAIT(1)
WHEELDOWN       // начало нападения
WAITMS(300)
WHEELDOWN
WAITMS(300)
WHEELDOWN
WAITMS(300)
WHEELDOWN
WAITMS(300)
WHEELDOWN
WAITMS(300)
WHEELDOWN
WAITMS(300)
WHEELDOWN
WAITMS(300)
WHEELDOWN
WAITMS(300)
KEYPRESS(#3)
WAIT(1)
LDOWN(1314,336)
LUP(1308,497)
LDOWN(1314,336)
LUP(1308,497)
WAIT(5)
KEYPRESS(#3)
LDOWN(685,108)
WAIT(45)
LUP(685,108)     // конец нападения
WAIT(60)
LCLICK(1273,138)  // сдаться
wait(4)
LCLICK(628,499)  // вы действительно хотите сдаться
wait(3)
LCLICK(995,243)  // домой
Продолжение кода
Code: (clickermann) [Select]
WAIT(1)
WHEELDOWN
WAITMS(300)
WHEELDOWN
WAITMS(300)
WHEELDOWN
WAITMS(300)
WHEELDOWN
WAITMS(300)
WHEELDOWN
WAITMS(300)
WHEELDOWN
WAITMS(300)
WHEELDOWN
WAITMS(300)
WHEELDOWN
WAITMS(300)
WHEELDOWN
WAITMS(300)
LDOWN(758,274)
LUP(745,560)
WAIT(2)
LCLICK(719,280)  // 1     собираем ресурсы
WAITMS(300)
LCLICK(607,315)  // 2     собираем ресурсы
WAITMS(300)               
LCLICK(569,341)  // 3     собираем ресурсы
WAITMS(300)
LCLICK(521,379)  // 4     собираем ресурсы
WAITMS(300)
LCLICK(496,547)  // 5     собираем ресурсы
WAITMS(300)
LCLICK(531,578)  // 6     собираем ресурсы
WAITMS(300)
LCLICK(573,605)  // 7     собираем ресурсы
WAITMS(300)
LCLICK(608,633)  // 8     собираем ресурсы
WAITMS(300)
LCLICK(774,619)  // 9     собираем ресурсы
WAITMS(300)
LCLICK(807,590)  // 10    собираем ресурсы
WAITMS(300)
LCLICK(897,526)  // 11    собираем ресурсы
WAITMS(300)
LCLICK(908,423)  // 12    собираем ресурсы
WAITMS(2000)
LCLICK(759,315)  // Выбор казармы 1
WAITMS(2000)
LCLICK(891,710)  // создание войск
WAITMS(1000)
LDOWN(535,329)  // метатели
WAITMS(7500)
LUP(535,329)    // отпускаем кнопку
WAITMS(1000)
LCLICK(1020,239)  // Выход из казармы 1
WAITMS(1000)
LCLICK(796,343)  // Выбор казармы 2
WAITMS(1000)
LCLICK(834,703)  // создание войск
WAITMS(1000)
LDOWN(535,329)  // метатели
WAITMS(10000)
LUP(535,329)    // отпускаем кнопку
WAITMS(1000)
LCLICK(1020,239)  // Выход из казармы 2
WAITMS(1000)
LCLICK(833,373)  // Выбор казармы 3
WAITMS(1000)
LCLICK(891,710)  // создание войск
WAITMS(1000)
LDOWN(535,329)  // метатели
WAITMS(7500)
LUP(535,329)    // отпускаем кнопку
WAITMS(1000)
LCLICK(1020,239)  // Выход из казармы 3
WAITMS(1000)
LCLICK(874,396)  // Выбор казармы 4
WAITMS(1000)
LCLICK(891,710)  // создание войск
WAITMS(1000)
LDOWN(535,329)  // метатели
WAITMS(7500)
LUP(535,329)    // отпускаем кнопку
LUP(535,329)
WAITMS(1000)
LCLICK(1020,239)  // Выход из казармы 4
WAIT(1)
LCLICK(936,271)  // Снятие ошибки двойного клика
WAIT(500)  //wait    1320  (ожидаем пока посторятся войска)
LCLICK(62,701)  // Атака
WAITMS(2000)
LCLICK(814,523)  // начать атаку
WAITMS(4000)
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: aden on March 23, 2014, 10:47:07 PM
ну он выполняет
Code: (clickermann) [Select]
ELSE
LCLICK(1278,212)      // Выбираем другого противника
WAIT(2)
GETSCREEN
COLORMODE(6)
END_IF
и идет дальше
если тебе надо при выполнении этого куска снова проверить
Code: (clickermann) [Select]
IF_PIXEL_IN(88,171, 93,201, 16777215)  //Нашел пиксель в области ресурсов - это хорошосделай goto примерно так

Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
WAIT(4)
search_pxl: // возврат после выбора другого противника
IF_PIXEL_IN(88,171, 93,201, 16777215)  //Нашел пиксель в области ресурсов - это хорошо
WAIT(10)
ELSE
LCLICK(1278,212)      // Выбираем другого противника
WAIT(2)
GETSCREEN
COLORMODE(6)
goto(search_pxl)    // снова проверяем ресурсы
END_IF                 
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: GetHigh on March 23, 2014, 11:07:08 PM
ну он выполняет
Code: (clickermann) [Select]
ELSE
LCLICK(1278,212)      // Выбираем другого противника
WAIT(2)
GETSCREEN
COLORMODE(6)
END_IF
и идет дальше
если тебе надо при выполнении этого куска снова проверить
Code: (clickermann) [Select]
IF_PIXEL_IN(88,171, 93,201, 16777215)  //Нашел пиксель в области ресурсов - это хорошосделай goto примерно так

Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
WAIT(4)
search_pxl: // возврат после выбора другого противника
IF_PIXEL_IN(88,171, 93,201, 16777215)  //Нашел пиксель в области ресурсов - это хорошо
WAIT(10)
ELSE
LCLICK(1278,212)      // Выбираем другого противника
WAIT(2)
GETSCREEN
COLORMODE(6)
goto(search_pxl)    // снова проверяем ресурсы
END_IF                 

 :o Работает! Спасибо)
Title: Re: Помогите разобраться! Последовательный анализ наличия пикселя + анализ картинки.
Post by: aden on March 24, 2014, 08:15:38 PM
прежде чем братся писать скрипт вы блин осмыслите что он должен делать составьте блок-схему или алгоритм работы.
надо же осознавать что вы там строчите