Author Topic: Помогите..  (Read 8983 times)

0 Members and 1 Guest are viewing this topic.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Помогите..
« Reply #45 on: February 13, 2017, 11:37:48 PM »
 :-\ :-\ :-\ нууууу, да. ... так у тебя много экземпляров картинок на экране? если да, то SCANPICTURE естественно тебе поможет, если же нет, то пользуйся темже чем и ранее, IF_PICTURE_IN

только не забывай, в каждом потоке не изолированы переменные, такчто в каждом потоке нужно воодить свои названия переменных и массивов - $var, $x, $y ... . в каждом потоке думай свои названия этих переменных !!!!!
« Last Edit: February 13, 2017, 11:40:05 PM by dramster »

i0

  • Оплот сообщества
  • ****
  • Posts: 353
  • CMann 4.13.014 final, ie, presto, win7 x86, x64
    • View Profile
Re: Помогите..
« Reply #46 on: February 13, 2017, 11:42:05 PM »
STD, ты понимаешь что каждый твой THREAD - это задача, выполняемая параллельно с другими твоими THREAD?
разбираем по частям что написалось (какое-то странное дитя франкенштейна, всё насквозь поточное)
Quote
Code: (clickermann) [Select]
thread(t, 1)     //
   LCLICK(RND(1480,1653), RND(877,981))
   WAIT(RND(10,17)
END_THREAD
этот поток постоянно кликает произвольную точку в области x1480 y877 - x1653 y981 с паузой между кликами от 10 до 17 секунд.
только скобку у WAIT закрой

Quote
Code: (clickermann) [Select]
thread(S, 1)
   GETSCREEN   //
   IF_PICTURE_IN(0,0,$_xmax,$_ymax,"4.bmp")
      LCLICK(35,419)
      WAIT(1)
      LCLICK(238,419)
      WAIT(1)
      LCLICK(205, 501)
   END_IF
END_THREAD
этот поток постоянно берёт весь экран в буфер и ищет в нём 4.bmp
если нашёл, делает два клика с паузой секунда
если не нашёл, то мгновенно без паузы повторяет свою работу
здесь нужно для разгрузки добавить паузу в случае если картинка не найдена

to be continued
ща третий посмотрю...

стоп. вы уже начали другой скрипт писать, значит не буду досматривать потоки)
« Last Edit: February 13, 2017, 11:46:32 PM by i0 »

STD

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Re: Помогите..
« Reply #47 on: February 13, 2017, 11:45:39 PM »
Я походу ваще дико накосячил.. но работает : о

Исходный код.


    //
   LCLICK(RND(1480,1653), RND(877,981))
   WAIT(RND(10,17)

getscreen
 
scanpicture($var, 0,0, 1366,768, "1.bmp")
 
while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y )
   waitms(200)
    lclick(258, 421)
    waitms(500)
    lclick(232, 511)
    waitms(200)
end_cyc


    getscreen
 
scanpicture($var, 0,0, 1366,768, "2.bmp")
 
while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y )
   waitms(200)
   end_cyc
   
   
                         getscreen
 
scanpicture($var, 0,0, 1366,768, "3.bmp")
 
while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y )
   waitms(200)
   end_cyc
   
   
   
   getscreen
 
scanpicture($var, 0,0, 1366,768, "4.bmp")
 
while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y )
   waitms(1500)
    LCLICK(858,741)
    waitms(200)
   end_cyc

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Помогите..
« Reply #48 on: February 13, 2017, 11:54:29 PM »
так тебе потоки означально не требовались  :D, че ты в них полез?

а i0 сразу как подметил  :D , я даже не обратил внимание про те случаи если картинка не найдется  :D , просто потоками пользовался всего пару раз  :D.
а в WAIT(RND(10,17) так и не поставил скобку  >:(
 а вообще, визуально последний код верный, не помешали бы небольшие задержки перед каждым getscreen, но и без этого норм.

STD

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Re: Помогите..
« Reply #49 on: February 14, 2017, 12:01:59 AM »
так тебе потоки означально не требовались  :D, че ты в них полез?

а i0 сразу как подметил  :D , я даже не обратил внимание про те случаи если картинка не найдется  :D , просто потоками пользовался всего пару раз  :D.
а в WAIT(RND(10,17) так и не поставил скобку  >:(
 а вообще, визуально последний код верный, не помешали бы небольшие задержки перед каждым getscreen, но и без этого норм.

Поясни как мне задержку поставить между поиском картинок, пжл-ста..

if_time(00, 03, 00)
getscreen
end_time
scanpicture($var, 0,0, 1673,1005, "3.bmp")
 
while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y )
    waitms(200)
end_cyc

Это задержка в 3 минуты, верно ?

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Помогите..
« Reply #50 on: February 14, 2017, 12:06:05 AM »
WAIT (delay) - приостанавливает выполнение сценария на неск. секунд
WAITMS (delay) - приостанавливает выполнение сценария на неск. миллисекунд
из справки


ты же между кликами задержку ставишь? так и в других нужных местах также можешь поставить.

3 минуты это будет wait(180), тоесть 180 сек.


 :-\ :-\ :-\ откуда ты вот это придумал???????????
Quote
if_time(00, 03, 00)
getscreen
end_time
« Last Edit: February 14, 2017, 12:07:54 AM by dramster »

STD

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Re: Помогите..
« Reply #51 on: February 14, 2017, 12:10:06 AM »
WAIT (delay) - приостанавливает выполнение сценария на неск. секунд
WAITMS (delay) - приостанавливает выполнение сценария на неск. миллисекунд
из справки


ты же между кликами задержку ставишь? так и в других нужных местах также можешь поставить.

3 минуты это будет wait(180), тоесть 180 сек.


 :-\ :-\ :-\ откуда ты вот это придумал???????????
Quote
if_time(00, 03, 00)
getscreen
end_time


thread(t, 1)     // рандом клик
   LCLICK(RND(1480,1653), RND(877,981))
   WAIT(RND(10,17))
END_THREAD

getscreen
 
scanpicture($var, 0,0, 1673,1005, "1.bmp")
 
while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y )
   waitms(200)
    lclick(258, 421)
    waitms(500)
    lclick(232, 511)
    waitms(200)
end_cyc

wait(180)

    getscreen
 
scanpicture($var, 0,0, 1673,1005, "2.bmp")
 
while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y )
   waitms(200)
   end_cyc
   
wait(180)
   
                         getscreen
 
scanpicture($var, 0,0, 1673,1005, "3.bmp")
 
while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y )
   waitms(200)
   end_cyc
   
wait(180)   
   
   getscreen
 
scanpicture($var, 0,0, 1673,1005, "4.bmp")
 
while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y )
   waitms(1500)
    LCLICK(858,741)
    waitms(200)
   end_cyc

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

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Помогите..
« Reply #52 on: February 14, 2017, 12:18:21 AM »
так ты определись, ты ищешь картинки, или картинку, у тебя на экране 1.bmp одна, или их много? ты бездумно перебираешь варианты.

Code: (clickermann) [Select]
thread(t, 1)     // рандом клик     , не трогаем его
   LCLICK(RND(1480,1653), RND(877,981))
   WAIT(RND(10,17))
END_THREAD



getscreen

scanpicture($var, 0,0, 1673,1005, "1.bmp")     //сразу начинаем искать картинкИ  1.bmp

while (arrsize($var) > 0)              //и кликаем по всем найденым картинкАМ  1.bmp
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y )
   waitms(200)
   lclick(258, 421)
   waitms(500)
   lclick(232, 511)
   waitms(200)
end_cyc

wait(180)         //после того как понажимали по этим 1.bmp, ждем 3 минуты

getscreen

scanpicture($var, 0,0, 1673,1005, "2.bmp")   //после трех минут ожидания, начинаем искать картинкИ  2.bmp

while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y )                   //жмякаим по ним
   waitms(200)
end_cyc

wait(180)         //после того как понажимали по этим 2.bmp, ждем 3 минуты

getscreen

scanpicture($var, 0,0, 1673,1005, "3.bmp")  //после трех минут ожидания, начинаем искать картинкИ 3.bmp

while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y )           //жмякаим по ним
   waitms(200)
end_cyc

wait(180)            //после того как понажимали по этим 3.bmp, ждем 3 минуты

getscreen

scanpicture($var, 0,0, 1673,1005, "4.bmp") //после трех минут ожидания, начинаем искать картинкИ 4.bmp

while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y )      //жмякаим по ним
   waitms(1500)
   LCLICK(858,741)
   waitms(200)
end_cyc
//после того, как понажимали по картинкам  4.bmp, СРАЗУЖЕ возвращаемся в начало скрипта
//и начинаем искать картинки  1.bmp

STD

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Re: Помогите..
« Reply #53 on: February 14, 2017, 12:20:02 AM »
так ты определись, ты ищешь картинки, или картинку, у тебя на экране 1.bmp одна, или их много? ты бездумно перебираешь варианты.

Code: (clickermann) [Select]
thread(t, 1)     // рандом клик     , не трогаем его
   LCLICK(RND(1480,1653), RND(877,981))
   WAIT(RND(10,17))
END_THREAD



getscreen

scanpicture($var, 0,0, 1673,1005, "1.bmp")     //сразу начинаем искать картинкИ  1.bmp

while (arrsize($var) > 0)              //и кликаем по всем найденым картинкАМ  1.bmp
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y )
   waitms(200)
   lclick(258, 421)
   waitms(500)
   lclick(232, 511)
   waitms(200)
end_cyc

wait(180)         //после того как понажимали по этим 1.bmp, ждем 3 минуты

getscreen

scanpicture($var, 0,0, 1673,1005, "2.bmp")   //после трех минут ожидания, начинаем искать картинкИ  2.bmp

while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y )                   //жмякаим по ним
   waitms(200)
end_cyc

wait(180)         //после того как понажимали по этим 2.bmp, ждем 3 минуты

getscreen

scanpicture($var, 0,0, 1673,1005, "3.bmp")  //после трех минут ожидания, начинаем искать картинкИ 3.bmp

while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y )           //жмякаим по ним
   waitms(200)
end_cyc

wait(180)            //после того как понажимали по этим 3.bmp, ждем 3 минуты

getscreen

scanpicture($var, 0,0, 1673,1005, "4.bmp") //после трех минут ожидания, начинаем искать картинкИ 4.bmp

while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y )      //жмякаим по ним
   waitms(1500)
   LCLICK(858,741)
   waitms(200)
end_cyc
//после того, как понажимали по картинкам  4.bmp, СРАЗУЖЕ возвращаемся в начало скрипта
//и начинаем искать картинки  1.bmp

Картинки, их 4, каждая может появится в любой момент, одновременно всех не может быть.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Помогите..
« Reply #54 on: February 14, 2017, 12:30:10 AM »
 :-\ :-\ :-\ :-\ :-\
вот тебе готовый скрипт, попробуй

он будет тупо мониторить на появление одной из четырех картинок, и если найдет какуюто из них, кликнет по ней, и по необходимости еще сделаейт пару нужных кликов.
плюс с этим, рандомный клик по области каждые 10-17сек, работают в отдельном потоке.
Code: (clickermann) [Select]
thread(t, 1)
   LCLICK(RND(1480,1653), RND(877,981))
   WAIT(RND(10,17))
END_THREAD


waitms(100)

GETSCREEN
IF_PICTURE_IN (0,0, 1673,1005, "1.bmp")
   LCLICK($_return1, $_return2)
   waitms(200)
   lclick(258, 421)
   waitms(500)
   lclick(232, 511)
END_IF

waitms(100)

GETSCREEN
IF_PICTURE_IN (0,0, 1673,1005, "2.bmp")
   LCLICK($_return1, $_return2)
END_IF

waitms(100)

GETSCREEN
IF_PICTURE_IN (0,0, 1673,1005, "3.bmp")
   LCLICK($_return1, $_return2)
END_IF

waitms(100)

GETSCREEN
IF_PICTURE_IN (0,0, 1673,1005, "4.bmp")
   LCLICK($_return1, $_return2)
   waitms(1500)
   LCLICK(858,741)
END_IF

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: Помогите..
« Reply #55 on: February 14, 2017, 08:20:10 AM »
Странно трансформируется скрипт. Раньше было FOR ($i=0,$i<30) на 2.bmp. Теперь уже не надо. Требую четкого описания поставленной задачи. Пошагово.
В какой последовательности появляются картинки? Точно появляются, или "может да а может нет"? Может ли быть одновременно 2-3 картинки, или только одна? Я вот думаю что всё очень просто, а мы кнопки зря мусолим.
« Last Edit: February 14, 2017, 08:32:37 AM by open_78 »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите..
« Reply #56 on: February 14, 2017, 11:55:05 AM »
Картинки, их 4, каждая может появится в любой момент, одновременно всех не может быть.
Рыбу ловишь?


open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: Помогите..
« Reply #57 on: February 14, 2017, 09:20:48 PM »
Вот еще вариант. Тут как я "хотел" есть - WHILE, и как ты хотел есть - FOR.
Пробуй.
Code: (clickermann) [Select]
THREAD(t, 1)
   LCLICK(RND(1480,1653), RND(877,981))
   WAIT(RND(10,17))
END_THREAD

$check=0
WHILE($check=0)
   GETSCREEN
   FOR($a=1,$a<5)
      IF_PICTURE_IN (0,0, 1673,1005,STRCONCAT($a,".bmp"))
         LCLICK($_return1,$_return2)
         WAITMS(100)
         $check=1
         IF($a=1)
            LCLICK(258, 421)
            WAITMS(500)
            LCLICK(232, 511)
            WAITMS(200)
         END_IF
         IF($a=4)
            WAITMS(1400)
            LCLICK(858,741)
            WAITMS(200)
         END_IF
         $a=9999
      END_IF
   END_CYC
END_CYC
« Last Edit: February 14, 2017, 10:04:19 PM by open_78 »