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

Основной раздел => Общие вопросы => Topic started by: KingDrakonov on September 06, 2018, 05:40:28 PM

Title: Виртуальная привязка области
Post by: KingDrakonov on September 06, 2018, 05:40:28 PM
Нужно задать зону выполнения для скрипта, то есть все выполнялось в той зоне

1) поиск  будет картинка "1"это будущий 0,0 .проверить виден пиксель от картинки на 900,600. это зона выполнения скрипта будет

2) не находит картинку или пиксель
   2.1) Не находит картинку этот шанс мал но может быть, ск прикрыта другим(и) окном пусть по ищет другую картинку "2" которая находится с права если по координаторам то будущий 900,0 и кликнет, выведет окно на передний план (если искать пиксель есть большой шанс что найдет другое ?)
   2.2) не  находит нижний пиксель, пусть пои щит картинку "2" которая указывала 900,0 нашлась, значит полосу прокрутки прокрутить вниз надо, найти и опустить на 20пх в низ. И повтор с пункта (1)
После повторов раз 10, стоп и сообщение не магу вывести зону, или что-то подобное

Конечно не плохо бы реализовать нижнюю прокрутку и расширения окна в лево

И приведите пару примеров поиска и клика.
Пожалуйста комментируйте строки
Title: Re: Виртуальная привязка области
Post by: dramster on September 06, 2018, 07:17:50 PM
Нужно задать зону выполнения для скрипта, то есть все выполнялось в той зоне

1) поиск  будет картинка "1"это будущий 0,0 .проверить виден пиксель от картинки на 900,600. это зона выполнения скрипта будет

2) не находит картинку или пиксель
   2.1) Не находит картинку этот шанс мал но может быть, ск прикрыта другим(и) окном пусть по ищет другую картинку "2" которая находится с права если по координаторам то будущий 900,0 и кликнет, выведет окно на передний план (если искать пиксель есть большой шанс что найдет другое ?)
   2.2) не  находит нижний пиксель, пусть пои щит картинку "2" которая указывала 900,0 нашлась, значит полосу прокрутки прокрутить вниз надо, найти и опустить на 20пх в низ. И повтор с пункта (1)
После повторов раз 10, стоп и сообщение не магу вывести зону, или что-то подобное

Конечно не плохо бы реализовать нижнюю прокрутку и расширения окна в лево

И приведите пару примеров поиска и клика.
Пожалуйста комментируйте строки
Я вот посмотрел твои предыдущие сообщения и темы, ну вроде ж писал хоть какието скрипты, и толковые, и помогали же.
А судя по запросам в этой теме, ты уже захотел чтобы все писали за тебя?  :o
Может седует начать хоть с чегото? Выложить наработки, какието простейшие скрипты. А потом уже вместе будем дополнять, исправлять, налаживать.
Даже неохота было вникать в суть задачи. :(
Title: Re: Виртуальная привязка области
Post by: KingDrakonov on September 06, 2018, 07:59:13 PM
Давай по другому объясню. Нужна полноценная привязка, привязка к игре запрещена то есть черный экран.
Чтобы работало как полагается да и остальные мелочи доделать нужна виртуальная привязка.
Чтоб некоторые вещи убрать из скрипта в первую очередь картинки много, можно заменить на пиксели, да и поиск можно на ожидание менять спокойно. Проблема одна малейший сдвиг грубо говоря не работает. поэтому пака написан па простому код время выполнения дольше да и ошибки есть

пример прошу на всякий случай вдруг не пойму как писать с этим кодом
сейчас для хроников почти написал
еще не думал ка там сборку делать
осталось в хрониках дирижабль сделать

с привязкой это бы лоб легче на много
Title: Re: Виртуальная привязка области
Post by: dramster on September 06, 2018, 08:31:32 PM
Нужна полноценная привязка, привязка к игре запрещена то есть черный экран.
Чтобы работало как полагается да и остальные мелочи доделать нужна виртуальная привязка.
Ок, давай начнем с этого. Что в твоем понимании значит "виртуальная привязка"? И чем она отличается от существующей "обычной привязки"?

Чтобы работало как полагается да и остальные мелочи доделать...
То есть без привязки не работает???

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



Quote
Проблема одна малейший сдвиг грубо говоря не работает. поэтому пака написан па простому код время выполнения дольше да и ошибки есть
Ты серьезно? Кто нибудь из присутствующих хоть немного понял из написанного? Остальное в том же духе  :-\ . Ты извини, я не в обиду, но если ты пишешь свои мысли как они есть, то это не значит что все поймут что это все значит...



Так, прошу прощения. Посидел пять минут всматриваясь в эти два предложения, скорее всего понял.
Правильно примерно так:
"Проблема одна - малейший сдвиг грубо говоря не работает. Поэтому пака написан по простому код. Время выполнения дольше, да и ошибки есть."

Title: Re: Виртуальная привязка области
Post by: KingDrakonov on September 06, 2018, 09:37:22 PM
Чтобы я мог перенести на любой комп, передвинуть окно, итд
Надо нашёл картинку перевести координаты переменную $XY00 =  $_return1, $_return2
И чтобы плясал весь поиск и выполнения (Скрипт) от переменной $XY00
Хотя эта переменная находится X600,Y100. я чтоб писал , якобы она находится X0,Y0
Как написать эту переменную так чтобы работал на весь код или вписать


И это просил как правильно написать IF_PIXEL_IN ($X1-96,$Y1-8, $X2+120,$Y2+19, 4145895) может понял бы как то все написать

Title: Re: Виртуальная привязка области
Post by: dramster on September 06, 2018, 10:17:52 PM
Чтобы я мог перенести на любой комп, передвинуть окно, итд
Надо нашёл картинку перевести координаты переменную $XY00 =  $_return1, $_return2
И чтобы плясал весь поиск и выполнения (Скрипт) от переменной $XY00
Хотя эта переменная находится X600,Y100. я чтоб писал , якобы она находится X0,Y0
Как написать эту переменную так чтобы работал на весь код или вписать


И это просил как правильно написать IF_PIXEL_IN ($X1-96,$Y1-8, $X2+120,$Y2+19, 4145895) может понял бы как то все написать
добавлено: Кирил уже предложил, я более подробно расписал.


Сложно...

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

WNDPOS (hwnd, x, y)  - помещает окно на экране в указанные координаты.
hwnd - HWND окна
x, y - экранные координаты

Определить hwnd можно двумя способами:

1. по координатам
HGET (x, y) - функция. Возвращает hwnd для элемента по заданным координатам.

2. по заголовку
WNDFIND (title, [begin] ) - Функция. Возвращает HWND окна с заданным заголовком.
title - заголовок окна либо его часть
begin - необязательный параметр; флаг сообщает о том что строка title может находиться ТОЛЬКО в начале заголовка

Если это чтото типа эмулятора, где размеры окна не статичны (меняются мышкой в углу), изображение при этом масштабируется, то требуется задать нужные размеры окна.
WNDSIZE (hwnd, w, h) - задает размер окна.
hwnd - HWND окна
w, h - ширина, высота окна

В этом случае нужно учитывать размеры самой рамки окна и размер заголовка. Зависит от ОС и стиля оформления.

В общем, твой код будет выглядеть примерно так:
Code: (clickermann) [Select]
$hwnd = WNDFIND ("Заголовок окна, то что сверху на нем написано.")

WNDPOS ($hwnd, 0, 0) //либо другие координаты

WNDSIZE ($hwnd, 800, 600) //либо другой размер. Использовать только в случае, если разрешение окна не статично.

//далее твой скрипт с нужными координатами

//пример
GETSCREEN(0, 0, 800, 600) // естественно, область снимка свою пиши
IF_PIXEL_IN (0, 0, 800, 600, 4145895) // естественно, область поиска свою пиши
//и так далее
//..........
//..........
В этом случае, на любом пк твое окно в начале переместится в нужные координаты. И если требуется, изменит свои размеры. И будет счастье  :D .

Title: Re: Виртуальная привязка области
Post by: KingDrakonov on September 06, 2018, 11:09:56 PM
Что-то подобное, но не то у одноклассников заголовок, может несколько вариантов.

Вот набросал начальный код заново
Code: (clickermann) [Select]
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "0000.bmp", -1, 100)  // ищет картинку нашол значит и есть начальные координаты
      $check = 1
      LOGWRITE ("1")
      $X = $_return1+999
      $Y = $_return2+597
     
      $X00 = $_return1
      $Y00 = $_return2
      WHILE(PXL ($X, $Y) ! 1653112)  // проверка что вся область которая нужна видна
         WAITMS (100)
      END_CYC
      WAITMS(100)
   ELSE
      WAITMS(50)
// след код корректировки     
   END_IF
END_CYC
HALT

// от этого чтоб все остальное работало снимки поиски выполнения итд, как сделать
$X00     
$Y00
до остального думаю додумаюсь сам
Title: Re: Виртуальная привязка области
Post by: dramster on September 07, 2018, 12:00:03 AM
Что-то подобное, но не то у одноклассников заголовок, может несколько вариантов.
Может я чего то не знаю, и у одноклассников есть какоето приложение специальное. Но если это просто страница открытая в браузере, то обычно заголовк окна браузера выглядит примерно так - "Название страницы - Mozilla Firefox" или "Название страницы - Opera"

К примеру вот такой код :
Code: (clickermann) [Select]
$hwnd = WNDFIND ("Mozilla Firefox")

WNDPOS ($hwnd, 0, 0) //либо другие координаты

WNDSIZE ($hwnd, 800, 600) //либо другой размер.

halt

Переместит браузер и изменит размеры независимо от открытой в нем страницы.

Если всеже у ОК есть какоето свое приложение, и заголовок в самом деле меняется постоянно (в чем я сомневаюсь), то никто не запрещает получать hwnd по HGET (x, y).



По поводу кода выше, по поиску картинки с начальными координатами тоже можно использовать. Но такой подход немного сложнее в написании. И этот цикл с ожиданием  пикселя WHILE(PXL ($X, $Y) ! 1653112) както бредово выглядит, тем более без GETSCREEN. Но видимо тебе виднее.

Сейчас пытался тебе написать как должен работать этот "// от этого чтоб все остальное работало снимки поиски выполнения итд, как сделать", уже начал писать... И понял, что все же для тебя это будет слишком сложно. Я не смог даже толком описать принцип написания такого скрипта, так как там требуется в начале высчитывать (искать) нужные координаты, а потом только вписывать эти данные в код. Короче гемор еще тот...
Title: Re: Дирижабль для хроников
Post by: Vint on September 07, 2018, 09:56:56 AM
// от этого чтоб все остальное работало снимки поиски выполнения итд, как сделать
$X00     
$Y00
Вот прямо так и делай. Используй эти переменные, что тебе мешает?
Прописывай в скрипте где нужно.


Я все универсальные скрипты делал на таких опорных изображениях. Выставление окна или получение его координат у меня не прижилось ввиду ограниченности использования. Если окно виндовое мы сразу зависим от темы оформления и версии OS. Да и с окном флеша на странице (для казуальных игр) никак не поможет перемещения браузера.
Вариант с использованием браузера где флеш можно открыть в отдельном немодальном окне тоже не прижился. Не заставишь всех использовать непревычный браузер.
Title: Re: Виртуальная привязка области
Post by: KingDrakonov on September 07, 2018, 10:13:24 AM
спасибо кирил почти то что надо попробую.
все равно прокрутка нужна плавная вертикальная на ноуте не вписывается, колесом и стрелками не катит крутить
Title: Re: Виртуальная привязка области
Post by: Vint on September 07, 2018, 10:26:57 AM
На ноутах с высотой экрана 768 лучше использовать полноэкранный режим нажав F11
Скролить окно туда сюда на пару строк не вариант. Ну и в любом случае делать это не колесом, а стрелками на клавиатуре.
Для мозилы есть плагин плавного скрола "SmoothWhell".
Title: Re: Виртуальная привязка области
Post by: KingDrakonov on September 07, 2018, 11:29:03 AM
На ноутах с высотой экрана 768 лучше использовать полноэкранный режим нажав F11
Скролить окно туда сюда на пару строк не вариант. Ну и в любом случае делать это не колесом, а стрелками на клавиатуре.
Для мозилы есть плагин плавного скрола "SmoothWhell".
да плангина твоего на оф саите не вижу
есть программа для винды но она на все влияет
к стате особенно на ноуте мене нужно пустое место хоч этих 250-300пх удобней с левой стороны для мониторинга
если не надо не чего кроме игры, использую полный экранный режим игры использую. это уже другой скрипт
Title: Re: Виртуальная привязка области
Post by: Vint on September 07, 2018, 12:18:04 PM
да плангина твоего на оф саите не вижу
А там и нет
http://smoothwheel.mozdev.org/
Title: Re: Виртуальная привязка области
Post by: Oraven on September 07, 2018, 12:25:03 PM
да плангина твоего на оф саите не вижу
А там и нет
http://smoothwheel.mozdev.org/

На какой версии ты сидишь? В мазилле давно уже есть встроенная плавная прокрутка. Сам использую 47 версию.
Title: Re: Виртуальная привязка области
Post by: KingDrakonov on September 07, 2018, 12:56:11 PM
Справку не читал среди обычных выполнений плавной прокрутки не замечал а так 52.9 вроде последния версия которая поддерживает мои дополнения
Title: Re: Виртуальная привязка области
Post by: Vint on September 07, 2018, 01:36:41 PM
На какой версии ты сидишь? В мазилле давно уже есть встроенная плавная прокрутка. Сам использую 47 версию.
На последней. Всё дело в том, что дома я этим ничем не занимаюсь. А на работе только XP и под неё версия 52.9.0 максимум  :D.
Вот о ней и речь.
Title: Re: Виртуальная привязка области
Post by: Oraven on September 07, 2018, 02:13:58 PM
У меня все плавно прокручивается
(https://pp.userapi.com/c847021/v847021084/e7b42/zWOI9BLwub0.jpg)
Title: Re: Виртуальная привязка области
Post by: KingDrakonov on September 07, 2018, 04:32:46 PM
включена эта опция похоже по умолчанию. да винде рывки по хлеще но шаг примерно такой же. поэтому и не оброщал внимание
Title: Re: Виртуальная привязка области
Post by: Vint on September 07, 2018, 04:34:02 PM
Да, сорри. Это есть и включено. Выключил и вернулся на несколько лет назад. Оказывается уже было гладко.

На самом деле ставил SmoothWhell прочитав статью. Боролся не с той гладкостью который малый шаг перемещения и которая включается той галочкой в настройках, а гладкостью всей видимой страницы при прокручивании.
SmoothWhell делает прокрутку ещё глаже и если работает синхронизация vsync то нет и артефактов рассинхронизации частей страницы (строба).
Title: Re: Виртуальная привязка области
Post by: KingDrakonov on September 14, 2018, 04:42:56 PM
Для начало вот правильно, может быть ошибка
+ Сказали бы вы мне какова Х**** ты пытаеся привязаться (Брать координаты итд) к самой игре тоесть флашплаеру. До меня дошло пока пытал тот код "работает то нет ..."

Если 10стр включена то 11-12стр выкл (убрать в комментарий)
Code: (clickermann) [Select]
$check = 0
WHILE($check = 0)
   GETSCREEN
   LOGWRITE ("2")      //-
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "0_Firefox.bmp", -1, 100)  // ищем картинку приложения, только не FlashPlayerP [32-bit mode] Процесс
      $check = 1
      LOGWRITE ("игра обнаружена")
      $hwnd = HGET($_return1,$_return2)  // определение номера окна
      //HSET($hwnd,1)   //+      привязка 1, 0 отвезать
      // WNDSETINFO($hwnd, 0, 0, 1037, 730) //установка окна  вписать нужные координаты и размер, минимальный размер окна
      WNDSIZE ($hwnd, 1037, 851)    //+ Задает размер окна
      //WNDPOS ($hwnd, 655, 0)   //+ Помещает окно на экране в указанные координаты   Правый угол комп + на половина полоса прокрутки
      WNDPOS ($hwnd, 0, 0)   //+ Помещает окно на экране в указанные координаты
      WNDGETINFO($hwnd, $var1, $var2, $var3, $var4) //+ определение существующих размеров и координат их можно и вписать в установку, тогда не придётся переписывать существующий скрипт
      LOGWRITE ("hwnd ",$hwnd," стали координаты ",$var1,",", $var2," размер ", $var3,",", $var4)    //+
      WNDBUMP ($hwnd)  //+Помещает окно на передний план
      WAITMS(1000) // время на обновление
      GETSCREEN
      LOGWRITE ("3")
      //      IF(PXL($X, $Y) = 1653112)   // Доделать проверка что вся область которая нужна видна //+ будете проверять лучше заместо ($X, $Y) пишите ( $var1+"координаторы Х", $var2+"координаторы Y") без ковычек
      LOGWRITE ("игра установлена ")
      WAITMS(100)
   ELSE
      LOGWRITE ("измените браузер или его панели")
      //      END_IF
   END_IF
END_CYC
//END_IF   // вроде должно быть выше  END_CYC

Вопросы (пака не дошло как сделать)
1) Как записать 12ст)  WNDPOS ($hwnd, 655, 0)  виде переменной чтобы вынести в начало. Цель, вк\выкл, и запись координат

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

3) Объясните мне как выполнять искать итд при помощи контрольной суммы пикселей и цветов, с разными условиями, и хотя 1 пример как выносить переменную

КОНЕЦ  Для меня переменные и условия пока почти как темный лес

Может кому то пригодиться
Мая мука + настройка вчера муучился было 200+ строк, почти чистыми, осталось это
Ладно поехали


Постарался описать как можно подробней
Легко переделать на поиск картинок
Цель: надо было по купать с самого дорогого. высота одинаковая, расстояние между предметами и кнопками покупки одинаковые
Искомый пиксель находится на высоте "Y 540" самый дальний их тут 3 покупки "X 710".
Скрипт покупает самое дорогое расточение  X710 покупает 1е и отнимает 199 и покупает на X511 уже 2й предмет, 1й на  Х 312
Клик дублируется (копируется) только по высоте Х 650

Code: (clickermann) [Select]
// m_move   не з наеш что это удали просто  обе строчки
m_move($var1+700-$U321+RND(-40,40),$var2+650+RND(-11,11))
LCLICK($_xmouse,$_ymouse)   // если только это строчка будет кликнет где нашел
//  и заспеши это
LCLICK($var1+700-$U321+RND(-40,40),$var2+650+RND(-11,11))   // клик в у казаном месте с ран домом


// куда угодно пишем выше выполнения а в самое начало чтобы удобно было изменить , цифры  это цвет пикселя
// Или так пишите в Выполнении  IF_PIXEL_IN($var1+700-$U321,$var2+530, $var1+720-$U321,$var2+550,138309,9962336,15786964)
$BUUB = 15786964   // Усиление брони
$BUUA = 138309      // Усиление атаки
$BUZM = 9962336    // Защита от магии
$BUPE = 8257         // -Повышение энергии
$BUL = 7536382       // -Лечение
$BUPEV = 9286    //+- Повышение энергии всем
$BUV = 660242   //- Воскрешение

// Выполнение
$U321 = 0           // обнуление
FOR ($Kup,$U321 < 400)                // FOR (просто Счетчик, подсчет меньше заданного)
   print ("Делаю"," Счет ",$U321)  // а удали, просто для наблюдения начал выполнение и  сколько подсчет
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      IF_PIXEL_IN($var1+700-$U321,$var2+530, $var1+720-$U321,$var2+550,$BUUA,$BUZM,$BUUB) // "$var1+700-$U321" координаты поиска  $var...+  не знаете значит вам пока не нужен удалить; 700 длина; $U321 отнемает то что нащитал; $BUUA,$BUZM,$BUUB  цвет пикселя
         $check = 1
         print ("КУПИЛ ",$U321) // а удали, просто для наблюдения что купил и сколько подсчитал
         WAITMS(RND(300,1000))    // просто пауза 0,3-1сек
         m_move($var1+700-$U321+RND(-40,40),$var2+650+RND(-11,11))   // описание в самом верху
         LCLICK($_xmouse,$_ymouse)                                   
         $U321 =  $U321 + 199  // пересчитывает подсчет чтобы $U321 была больше на 199
         WAITMS(100)
      ELSE
         
         
         IF_PIXEL_IN($var1+700-$U321,$var2+530, $var1+720-$U321,$var2+550,$BUPE,$BUL,$BUV,$BUPEV)
            $check = 1
            $U321 =  $U321 + 199
            print ("не нужно ",$U321)    // а удали, просто для наблюдения что не купил и сколько подсчитал
            WAITMS(100)
         ELSE
            LOGWRITE ("Не нашел")   // а удали, просто  если хочешь что что то не находит
            WAIT(2)
         END_IF
      END_IF
   END_CYC
   WAITMS(rnd(300,1000))
   
   
   GETSCREEN  // 6 строк для проверки выскочило окно о не хватки денег, ен нужно удали
   IF_PICTURE_IN ($var1+500,$var2+520, $var1+530,$var2+550, "Башня_\N_Ch_OK.bmp", -1, 100)
      WAITMS(rnd(1000,1500))
      m_move($_return1+3+RND(-30,30),$_return2+4+RND(-11,11))
      LCLICK($_xmouse,$_ymouse)
   END_IF
   
   
   print ("счет ",$U321)       // а удали, просто для наблюдения сколько подсчет
END_CYC


LOGWRITE ("Закончил ",$Kup)   // это можно в конец скрипта чтобы видел сколько раз купил и пропустил, одна общая цифра
Title: Re: Виртуальная привязка области
Post by: Oraven on September 15, 2018, 07:41:33 AM
1 вначале скрипта пишешь переменные в которых указываешь координаты. В функции указываешь эти переменные.
2 нужно использовать поток который параллельно основному скрипту будет следить за таймером.
3 Для начала получаешь число контрольной суммы
Code: (clickermann) [Select]
GETSCREEN
$hash = PXLCRC(10,10, 1000,1000) // Получаем контрольную сумму пикселов в области 10,10, 1000,1000
LOGWRITE ($hash)
HALT

Теперь в условии можно сравнивать контрольную сумму области с полученным ранее числом
Code: (clickermann) [Select]
GETSCREEN
IF(PXLCRC(10,10, 1000,1000) = 3171075084)
  // Если верно
ELSE
  // Если не верно
END_IF

$time = $_time_t + 300
$time - просто переменная с любым именем в которую мы сохраним текущее время в секундах + 300 сек
$_time_t - системная переменная возвращающая текущее время Unix

Code: (clickermann) [Select]
$wx = 100 // Координата положения окна
$wy = 100

//=============================================

$time = $_time_t + 300 // Устанавливаем таймер на 5 минут
$timeF = $_time_t // Засекаем время с момента запуска
SETTHREAD (t1, 1) // Запускаем поток t1

THREAD(t1, 0)
   IF($time < $_time_t) // Тут в потоке проверяем каждую секнуду не вышло ли время
      BEEP(900,2000) // Если вышло сигналим
      LOGWRITE ("Прошло с момента запуска: ", $_time_t-$timeF, " сек") // Выводим в лог время выполнения скрипта
      HALT // И останавливаем выполнение
   END_IF
   WAITMS(1000)
END_THREAD

go: // Бесконечный цикл

$check = 0
WHILE($check = 0)
   GETSCREEN
   LOGWRITE ("2")
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "0_Firefox.bmp", -1, 100)  // ищем картинку приложения, только не FlashPlayerP [32-bit mode] Процесс
      $check = 1
      $time = $_time_t + 300 // продлеваем таймер
      LOGWRITE ("игра обнаружена")
      $hwnd = HGET($_return1,$_return2)  // определение номера окна
      //HSET($hwnd,1)   //+      привязка 1, 0 отвезать
      // WNDSETINFO($hwnd, 0, 0, 1037, 730) //установка окна  вписать нужные координаты и размер, минимальный размер окна
      WNDSIZE ($hwnd, 1037, 851)    //+ Задает размер окна
      //WNDPOS ($hwnd, 655, 0)   //+ Помещает окно на экране в указанные координаты   Правый угол комп + на половина полоса прокрутки
      WNDPOS ($hwnd, $wx, $wy)   //+ Помещает окно на экране в указанные координаты
      WNDGETINFO($hwnd, $var1, $var2, $var3, $var4) //+ определение существующих размеров и координат их можно и вписать в установку, тогда не придётся переписывать существующий скрипт
      LOGWRITE ("hwnd ",$hwnd," стали координаты ",$var1,",", $var2," размер ", $var3,",", $var4)    //+
      WNDBUMP ($hwnd)  //+Помещает окно на передний план
      WAITMS(1000) // время на обновление
      GETSCREEN
      LOGWRITE ("3")
      //      IF(PXL($X, $Y) = 1653112)   // Доделать проверка что вся область которая нужна видна //+ будете проверять лучше заместо ($X, $Y) пишите ( $var1+"координаторы Х", $var2+"координаторы Y") без ковычек
      LOGWRITE ("игра установлена ")
      WAITMS(100)
   ELSE
      LOGWRITE ("измените браузер или его панели")
      WAITMS(500)
      //      END_IF
   END_IF
END_CYC


GOTO(go) // Бесконечный цикл
Title: Re: Виртуальная привязка области
Post by: KingDrakonov on September 15, 2018, 03:34:58 PM
СПС
1) Я как понял, если раз вызвал "THREAD ... END_THREAD" он прочитал дает проход дальше, но выполняется условие все время не зависимо что выполняется.

2) Это я уже пытал
Code: (clickermann) [Select]
$wx = 100 // Координата положения окна
$wy = 100
//=============================================
WNDPOS ($hwnd, $wx, $wy)
Если $W... ,не указывать, убрать в комментарий, пытался химикать немного. не прокатывает. Будет 0,0 или то что задал.
цель; выключить (как словно этой строчки нету) или задать координаты которые мне надо

3) ну контрольные суммы как делать знаю спс, при моей попытки я не ставил равно, вопрос не тот, условие только может быть только это. без поиска картинки все равно не обойдеся в некоторых местах
IF(PXLCRC(100,100, 100,100) = 3171075084)
И искать будет 10х10 в зоне 100х100, если будет не отвечайте проверю сегодня
Хотя где то искали по нескольким пикселям с подряд не помню что и где но, это большое увеличение кода

Eсли только это условие то как написать покороче
1я   PXLCRC(10,10, 30,30) = $01
2я   PXLCRC(50,10, 80,30) = $02
3я   PXLCRC(100,10, 130,30) = $03
искал все 3 при находке любой выдавал какую нашел и где

Думаю все объяснил что мне надо.
Пака писал эту либуду вроде дошло как сделать одно выполнение.
Title: Re: Виртуальная привязка области
Post by: Oraven on September 15, 2018, 04:15:33 PM
Заключи функцию в условие.

Code: (clickermann) [Select]
$wx = -1 // WNDPOS работать не будет
$wy = 100
//=============================================
IF(($wx > -1)&($wy > -1)) // функция выполняется если оба параметра 0 или больше
   WNDPOS ($hwnd, $wx, $wy)
END_IF
Title: Re: Виртуальная привязка области
Post by: KingDrakonov on September 27, 2018, 08:10:13 PM
Заключи функцию в условие.
Это я не увидел в притык спс


Помогите еще с одним, или я что то не понял как это сделать

На карте от1 до 15(пака макс видел) сражений расположение неизвестно, хотя раз напал появляется значок
Цель;  найти картинку у которой  нет 2й картинки и кликнуть (выше она примерно на 30пх), если не находит  пусть поищет еще раз 5 + задержка сек 10, если все же не нашел спустя 5 раз пусть выполнит последние действие.

Как понимаю это уже делается с  помощью массива
Title: Re: Виртуальная привязка области
Post by: KingDrakonov on September 29, 2018, 05:13:53 PM
еще 1 вопрос пустое значение чему ровняется 0 или меньше всего
если судить по математике, то пусто значит 0

и ответьте на прошлый вопросик и желательно поиск с лева на право
Code: [Select]
На карте от1 до 15(пака макс видел) сражений расположение неизвестно, хотя раз напал появляется значок
Цель;  найти картинку у которой  нет 2й картинки и кликнуть (выше она примерно на 30пх)
это ладно вроде знаю как в строить
Code: [Select]
если не находит  пусть поищет еще раз 5 + задержка сек 10, если все же не нашел спустя 5 раз пусть выполнит последние действие.
Title: Re: Виртуальная привязка области
Post by: KingDrakonov on October 01, 2018, 11:30:41 AM
Спасибо за ответы. Воскресенье сам разобрался, как только на азы разобрал несколько примеров
Title: Re: Виртуальная привязка области
Post by: KingDrakonov on October 06, 2018, 12:12:14 AM
Ребят помогите с очень легкой задачей только не молчите

сначала рабочий код, чтобы было понятно что я хочу
Code: (clickermann) [Select]
$Reid = 0
$Turnir = 0
WHILE($Turnir = 0)
   
   
   $time = $_time_t + 300
   $check = 0
   WHILE($check = 0)                         // =========== Поиск
      G_SCR
      C_MOD                            // Рейд
      IF_PICTURE_IN ($var1+623,$var2+476,$var1+648,$var2+501, "A_Hroniki\J_m6.bmp", -1, 100)
         $check = 1
         $Reid = 1
         m_lclick($_return1-1+RND(-25,25), $_return2+6+RND(-10,10))
      ELSE // Рейд нету
         IF_PICTURE_IN ($var1+383,$var2+479,$var1+412,$var2+508, "A_Hroniki\G_T_T_y_m6.bmp", 0, 100) // Ы
            $check = 1
            m_move($_return1, $_return2)                // удалить
           
            // =======================
                       
            print("Начал поиск")                        // не нужно
            // =========== поиск наподения
            SCANPICTURE($ARR_SCAN,$var1,$var2,$var3,$var4, "A_Hroniki\G_T_T_v_m6.bmp", -1, 100)    // $ARR_SCAN  массив
            print("Нашол ",ARRSIZE($ARR_SCAN))                        // не нужно
           
            $ARR_NUM = 0
            WHILE($ARR_NUM < ARRSIZE($ARR_SCAN))
               $X = $ARR_SCAN [$ARR_NUM]
               INC($ARR_NUM,1)                                //Увеличивает значение переменной
               $Y = $ARR_SCAN [$ARR_NUM]
               INC($ARR_NUM,1)
               print($ARR_NUM/2,") Нашол X,Y ",$X-$var1,",",$Y-$var2)      // не нужно
               //m_move($X, $Y)   // Клик
               //WAITMS(100)
               print("Ищю тут ",$X-60-$var1,",",$Y-5-$var2," - ",$X-45-$var1,",",$Y+10-$var2)      // не нужно
               IF_PICTURE_IN ($X+41,$Y-104,$X+56,$Y-89, "A_Hroniki\G_T_T_vv_m6.bmp", -1, 100)       //Бой был
                  print("+++ 1   X=", $_return1-$var1, ", Y=", $_return2-$var2)                   // не нужно
                 
                  IF($ARR_NUM = ARRSIZE($ARR_SCAN))
                     print()
                     print("Конец")
                     HALT
                  END_IF
                 
               ELSE
                  print("----")
                  m_lclick($X+62+RND(-25,25), $Y-70+RND(-25,25))                // н
                  $T_Vboi = 1
                  $ARR_NUM = ARRSIZE($ARR_SCAN)    // Равно чтоб не искал
               END_IF
               print("Искал",$ARR_NUM/2)
            END_CYC
            UNDEFINE($ARR_SCAN)   // =========== поиск нападения
         END_IF
      ELSE
         WAITMS(1000)
      END_IF
   END_CYC     // =========== Поиск
   WAIT(1)
     
   WHILE($T_Vboi = 1)
      // код боя
   END_CYC
   
   WHILE($Reid = 1)
      // код рейда
   END_CYC
END_CYC
Логи нужны только для проверки почти все
Стоп будет изменен на переменную продолжения


Есть одно гигантское но и 2е
1) Если бой был, и очков не заработал то заначек не появляется. цель 1 раз напал и забыл про него
2) нужно суда добавить рандом на нападения


Мысль была такая
1) Выполнить поиск войн не начатых занести в массив. (это понял как сделать вроде)
2) Выбирать их рандомно (это доже вроде понял как сделать)
3) Кликнул и удалил элемент из массива  (хз как)
4) повтор пункта 2-3.  Когда небудет элементов в массиве выполнил еще другое действие (у меня пака стоит стоп на том месте)


Хотя была еще одна мысль
(Коротко) занес в массив. перемешал. вынул последний элемент кликнул и удалил
Title: Re: Виртуальная привязка области
Post by: Oraven on October 06, 2018, 02:40:20 PM
Что такое?
Code: (clickermann) [Select]
G_SCR
C_MOD

Почему нигде нет GETSCREEN ?
Title: Re: Виртуальная привязка области
Post by: KingDrakonov on October 06, 2018, 04:34:06 PM
снимок и корекция я упростил да и легче читается код

#define  G_SCR:GETSCREEN($var1,$var2,$var3,$var4)       // снимок экрана
#define  C_MOD:COLORMODE(6,$var1,$var2,$var3,$var4)     // цветокоррекция; 8-2 7-8 6-64 5-512 4-4,096 3-32,768 2-262,144 1-2,097,152 0-16,777,216
Title: Re: Виртуальная привязка области
Post by: KingDrakonov on October 06, 2018, 08:59:16 PM
Пака куски кода прятать не буду, надо все объединить (сбор ресурсов,прохождения разные, итд) это все пока отдельно лежит плюс пока 1 не понравилось или что то  не заработало как надо редактировать легко и искать место где
под объединением подразумеваю удаление почти одинаковых частей

Ну тут реально легкая задача у меня аш мозгов не хватает и кипят
Title: Re: Виртуальная привязка области
Post by: Oraven on October 06, 2018, 09:23:09 PM
Вот пример рандомизации координат
Code: (clickermann) [Select]
GETSCREEN
SCANPICTURE($ARR_SCAN, 231,194, 1698,582, "Image.bmp", 0, 100)
$siz = ARRSIZE($ARR_SCAN)
IF($siz > 0)
   FOR($a=0,$a<$siz,2) // создание массива $ARR для рандомизации индексов
      ARRPUSH($ARR, $a)
   END_CYC
   $i = ARRSIZE($ARR)-1
   WHILE($i>0) // Рандомизация массива $ARR
      $j = RND(0,$i)
      IF($i ! $j)
         $tmp = $arr[$j]
         $ARR[$j] = $ARR[$i]
         $ARR[$i] = $tmp
      END_IF
      INC($i,-1)
   END_CYC
   FOR($ARR_NUM=0,$ARR_NUM<$siz/2)
      $X = $ARR_SCAN[$ARR[$ARR_NUM]]
      $Y = $ARR_SCAN[$ARR[$ARR_NUM]+1]
     
      LCLICK($X,$Y)
      WAITMS(100)
     
   END_CYC
   UNDEFINE($ARR_SCAN)
   UNDEFINE($ARR)
END_IF
Title: Re: Виртуальная привязка области
Post by: KingDrakonov on October 06, 2018, 09:46:40 PM
СПС завтра буду внедрять а в понедельник пробовать. с понедельника по пятницу эта война
Title: Re: Виртуальная привязка области
Post by: Vint on October 07, 2018, 09:31:09 PM
снимок и корекция я упростил да и легче читается код

#define  G_SCR:GETSCREEN($var1,$var2,$var3,$var4)       // снимок экрана
#define  C_MOD:COLORMODE(6,$var1,$var2,$var3,$var4)     // цветокоррекция; 8-2 7-8 6-64 5-512 4-4,096 3-32,768 2-262,144 1-2,097,152 0-16,777,216
И ты правдо считал, что это не важно и можно часть кода не показывать?

Выходит гетскрин и колормод применяем к одной области, а ищем совсем в другой. Что же это за оптимизация такая.
Title: Re: Виртуальная привязка области
Post by: KingDrakonov on October 08, 2018, 09:14:58 AM
Умно придумал, я даже сам не понял в начале как это как работает
Code: (clickermann) [Select]
$X = $ARR_SCAN[$ARR[$ARR_NUM]]