Author Topic: Сканирование пикселя.  (Read 4913 times)

0 Members and 1 Guest are viewing this topic.

Artem1984

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Сканирование пикселя.
« on: August 09, 2016, 03:00:59 AM »
Доброй ночи. Подскажите пожалуйста следующее:
в кликере вот такой вот скрипт для игры, его цель - отслеживать наличие 2ух пикселей (путем опытных проб оказалось что в данном месте игра воспроизводит 2 цвета пикселей, просматривал и записывал № цветов через колормод 6 как и советовалось в одной из тем)

GETSCREEN // скан пикселя
COLORMODE(6,127,54)
//LCLICK(127,54)  // 9804959,9870751
WAIT(3)
IF_PIXEL_IN(127,54, 9804959,9870751) //2 варианта пикселя (заполненного меча)
WAITMS(500)
GOTO(mess4) // если нашли идем к блоку mess4
ELSE // если не нашли
WAITMS(500)
GOTO(fedya)  // выбор другого аккаунта
END_IF

А теперь проблема, выше указанный скрипт работает совершенно случайно, он может просканировав пиксель ниже
//LCLICK(127,54)  // 4800300 - цвет не заполненного меча
включает блок mess4 , хотя должена быть ложная команда и сработать блок fedya - выбор другого аккаунта.
Подскажите пожалуйста в чем проблема? Заранее спасибо!

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Re: Сканирование пикселя.
« Reply #1 on: August 09, 2016, 08:55:28 AM »
неверный синтаксис, плюньте туда где вам такое советовалось, если самостоятельно не доработали скрипт напильником.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Сканирование пикселя.
« Reply #2 on: August 09, 2016, 09:03:33 AM »
Подскажите пожалуйста в чем проблема? Заранее спасибо!

Проблема в задании аргументов  в вызываемых функциях. Нужно почитать справку про IF_PIXEL_IN и COLORMODE. Сколько там должно быть аргументов и что они значат.
Сейчас эти функции просто игнорируются и выполняется далее по тексту GOTO(mess4)


Artem1984

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Сканирование пикселя.
« Reply #3 on: August 09, 2016, 10:33:29 AM »
GETSCREEN // скан пикселя
COLORMODE(6,127,54)
//LCLICK(127,54)  // 9804959,9870751
WAIT(3)
IF_PIXEL_IN(125,52, 129,56, 9804959,9870751) //2 варианта пикселя (заполненного меча)
lclick($_return1, $_return2)
WAITMS(500)
GOTO(mess4) // если нашли идем к блоку mess4
ELSE // если не нашли
WAITMS(500)
GOTO(fedya)  // выбор другого аккаунта
END_IF

вот так должно выглядеть?

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

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Сканирование пикселя.
« Reply #4 on: August 09, 2016, 10:46:11 AM »
Область в COLORMODE не задана!
Code: (clickermann) [Select]
COLORMODE(6,125,52, 129,56)
Там точно нужен поиск пикселя? В неизвестном месте из области.
Или нужна проверка одного конкретного? (как это делается при проверке шкалы).


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Сканирование пикселя.
« Reply #5 on: August 09, 2016, 10:52:51 AM »
И ещё... в COLORMODE(6), который ты применяешь, не бывает ни цвета 9804959 ни 9870751.
Цвет для поиска нужно тоже брать в применяемом режиме. В редакторе, под окном лупы, справа, есть цифра - режим цветокоррекции. Прощёлкай её до 6.
Лучше включить лупу, чтобы видеть изменения. Скорее всего два цвета не нужно будет. При подобранном режиме (6-7) они будут превращаться в один.


Artem1984

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Сканирование пикселя.
« Reply #6 on: August 10, 2016, 05:32:48 PM »
И ещё... в COLORMODE(6), который ты применяешь, не бывает ни цвета 9804959 ни 9870751.
Цвет для поиска нужно тоже брать в применяемом режиме. В редакторе, под окном лупы, справа, есть цифра - режим цветокоррекции. Прощёлкай её до 6.
Лучше включить лупу, чтобы видеть изменения. Скорее всего два цвета не нужно будет. При подобранном режиме (6-7) они будут превращаться в один.
нет, так как раз таки 2 цвета, при переключении аккаунтов в игре в одном и той же координате с использованием лупы х6 цветов в разные моменты было именно 2 которых я перечислил.
остальной скрипт я верно написал, за исключением колормод?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Сканирование пикселя.
« Reply #7 on: August 10, 2016, 06:06:49 PM »
Номера цветов ты взял без применения COLORMODE(6), а ищешь в нём.
Смотри выше прикреплённый файл.

x6  - это кратность увеличения лупы. Менять нужно цифру справа от %
« Last Edit: August 10, 2016, 06:11:24 PM by Vint »


Artem1984

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Сканирование пикселя.
« Reply #8 on: August 10, 2016, 10:58:10 PM »
Номера цветов ты взял без применения COLORMODE(6), а ищешь в нём.
Смотри выше прикреплённый файл.

x6  - это кратность увеличения лупы. Менять нужно цифру справа от %
да, спасибо, этого я не знал!
еще хотел уточнить, если картинка в динамике , то как будет лучше настроить проверку на пиксель? сделать несколько возможных цветов (область отклонения +/- 10 градусов по вертикали)
или просто увеличить область поиска?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Сканирование пикселя.
« Reply #9 on: August 11, 2016, 09:16:28 AM »
По ситуации.
Смотря какие размеры. Возможные дубли цвета в других объектах, самой анимации и т.д.
Возможно придётся сделать и то и другое.


Artem1984

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Сканирование пикселя.
« Reply #10 on: August 11, 2016, 03:10:28 PM »
если не затруднит подскажите где ошибка(если конечно она есть, скрипт дописывал на работе и еще не проверял, до этого возникали сложности с переключением между блоками и сканированием пикселей).

сразу опишу в словах суть работы:
1.- кликер выполняет подключение к "сесии" путем проверки наличия попыток, в случае если попытки закончились он переключается к блоку выбора следующего аккаунта, в случае наличия попыток выполняет подключение и последующее выполнение блоков сессии.
2.- подключаясь к сессии(онлайн) дается 20 секунд на выбор места расположения старта группы, за эти 20 секунд один из игроков может передумать и покинуть сессию и она пересоздается автоматически подключаясь(без действий игрока) подбирая новых (рандомных) игроков в сессию, до тех пор пока игрок либо сам не покинет сессию, либо она не начнется.
3.- в данном моменте заключается самая сложная (во всяком случае для меня) задача чтоб кликер проверял одну плитку сначала без расположения на ней группы и щелкал на нее, а потом проверял наличие расположения на ней группы и ожидал начала сессии (20 секунд), после чего он проверял старт сессии путем нахождения пикселя на морде босса, а в случае её отсутствия (если вдруг сессия была кем то разорвана перед самым её стартом кликер возвращался к началу поиска клетки т.к. в этом случае игра будет автоматически перебрасывать нас к поиску новой сессии.

теперь по тому что я написал:

parkovka:   //блок выбора места
GETSCREEN    //скан области размещения группы
WAITMS(100)
COLORMODE(6,357,335, 361,339)
WAITMS(100)
//LCLICK(359,337)  // 8372159//Пиксель нижней плитки картинка в динамике шаг +-10
IF_PIXEL_IN(357,335, 361,339, 8372159)//квадрат поиска цвета пикселя на плитке №1
WAIT(1)
LCLICK(357,338) // нашли пиксель,становимся сюда   
WAITMS(100)
ELSE //если не нашли пиксель
WAIT(2)
GOTO(parkovka) // если не нашли возвращаемся обратно к поиску пикселя (возможно разрыв сессии одним из игроков)
END_IF
(рисунок №1 левая часть рисунка) http://imgur.com/a/cc49y

в случае успеха переходим к проверки расположения группы путем скана пикселя группы на месте где мы её расположили.

//проверка места группы
mesto:
GETSCREEN //скан пикселя группы
WAITMS(100)
COLORMODE(6,354,341, 358,345)
WAITMS(100)
//LCLICK(356,343)  // 16777215// Пиксель плитки где уже стоит группа
IF_PIXEL_IN(354,341, 358,345, 16777215)//квадрат поиска цвета пикселя на плитке
WAIT(4) //нашли пиксель стоим на месте 4 сек
GOTO(mesto:)// идем к поиску парковки
ELSE // если не нашли
GOTO(proverka) // идем к проверке старта сессии
END_IF
(рисунок №1 правая часть рисунка)

proverka:
GETSCREEN
WAITMS(100)
COLORMODE(6,1202,118, 1206,122)
WAITMS(100)
//LCLICK(1204,120)  // 16704349  пиксель на морде босса
IF_PIXEL_IN(1202,118, 1206,122, 16704349)//квадрат поика цвета пикселя морды босса
WAIT(1)
GOTO(nagrada) // идем к блоку награда
ELSE // если не нашли
GOTO(parkovka) // возвращаемся обратно к поиску пикселя начало боя
END_IF
(рисунок №2 нижний рисунок) http://imgur.com/a/cc49y

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