Author Topic: Однократный "проход" картинок.  (Read 2940 times)

0 Members and 1 Guest are viewing this topic.

lahesis333

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Однократный "проход" картинок.
« on: November 10, 2020, 10:33:35 PM »
Подскажите пожалуйста, что исправить в коде чтобы каждая из картинок когда находится выполнялась один раз и после этого искалась следующая, даже если предыдущая картинка не пропала с экрана?
Code: [Select]
FOR($var = 0 ,$var < 1)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (710,230,730,260, "деятельность.bmp", -1, 100)//нашлась первая картинка
IF($click1 < $_ms)
LCLICK(840,260)//клик в окно1
WAIT(1)
FOR($i=1,$i<=TFCOUNT("музыка.txt"))// берем строку из файла
TOCLIP(TFREAD("музыка.txt", $i)) //копируем строку в буфер
WAITMS(1000)
KEYDOWN (#CTRL)
WAITMS (50)
KEYPRESS (#V)
KEYUP (#CTRL)
WAITMS(50)
END_CYC
$click1 = $_ms+1000
END_IF
END_CYC
else
FOR($var = 1 ,$var < 2)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (730,360,770,400, "интересы.bmp", -1, 100)//нашлась вторая картинка
IF($click1 < $_ms)
LCLICK(840,260)
WAIT(1)
FOR($i=1,$i<=TFCOUNT("интересы.txt")) // берем строку из файла
TOCLIP(TFREAD("интересы.txt", $i)) //копируем строку в буфер
WAITMS(1000)
KEYDOWN (#CTRL)
WAITMS (50)
KEYPRESS (#V)
KEYUP (#CTRL)
WAITMS(50)
END_CYC
$click1 = $_ms+1000
END_IF
END_CYC
else
END_IF
END_IF

lahesis333

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: Однократный "проход" картинок.
« Reply #1 on: November 12, 2020, 02:32:48 PM »
Скажите, может я непонятно объяснил суть проблемы? Или какие то еще нюансы? Не думаю что данная задача столь сложна, что за нее никто не хочет браться.(или как раз по этому??)Я правда уже перепробовал не один вариант. Может проблема в том, что идет цикл в цикле? Поэтому не получается настроить кликер?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Однократный "проход" картинок.
« Reply #2 on: November 12, 2020, 03:46:28 PM »
Непонятно. Но до того как станет понятно, нужно код исправить, он не рабочий.
Перепутаны окончания блоков. Откуда-то появились else в циклах FOR

Ошибки в строках 19, 20, 39, 40, 41, 42
Как там должно быть, зависит от того, что ты хотел.


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Однократный "проход" картинок.
« Reply #3 on: November 12, 2020, 03:50:02 PM »
Подскажите пожалуйста, что исправить в коде чтобы каждая из картинок когда находится выполнялась один раз и после этого искалась следующая, даже если предыдущая картинка не пропала с экрана?
А дальше что должно произойти? Когда начинать снова искать уже найденные.
Они должны искаться независимо друг от друга или вторая только после того, как нашлась первая?

Что хотели получить вот этим?
Code: (clickermann) [Select]
IF($click1 < $_ms)...Своими словами.
« Last Edit: November 12, 2020, 03:57:57 PM by Vint »


lahesis333

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: Однократный "проход" картинок.
« Reply #4 on: November 12, 2020, 06:04:27 PM »
Подскажите пожалуйста, что исправить в коде чтобы каждая из картинок когда находится выполнялась один раз и после этого искалась следующая, даже если предыдущая картинка не пропала с экрана?
А дальше что должно произойти? Когда начинать снова искать уже найденные.
Они должны искаться независимо друг от друга или вторая только после того, как нашлась первая?

Что хотели получить вот этим?
Code: (clickermann) [Select]
IF($click1 < $_ms)...Своими словами.
Если честно, то брал за основу один из кодов с форума. Если отбросить мои произведения, то в чистом варианте нужно:
 чтобы картинка1 нашлась-выполнились действия(в моем случае это клик в области картинки и вставка после клика текста из файла)-затем нашлась вторая картинка и действия аналогичны с первой.При этом ни картинка 1 ни картинка 2 с экрана не пропадают. Они могут искаться независимо друг от друга(т.к. они одновременно появляются на экране). Т.е. может находиться сначала 2 и наоборот сначала 1(без разницы). Они друг к другу отношения не имеют.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Однократный "проход" картинок.
« Reply #5 on: November 12, 2020, 09:21:35 PM »
Code: (clickermann) [Select]
SUB(action, $filename)
    IF($click1 < $_ms)
        LCLICK(840, 260)
        WAIT(1)
        FOR($i=1, $i <= TFCOUNT($filename))
            TOCLIP(TFREAD($filename, $i))
            WAITMS(1000)
            KEYDOWN(#CTRL)
            WAITMS(50)
            KEYPRESS(#V)
            KEYUP(#CTRL)
            WAITMS(50)
        END_CYC
        $click1 = $_ms+1000
    END_IF
END_SUB

IF($find1 = 0)
    GETSCREEN
    COLORMODE(6)
    IF_PICTURE_IN(710,230,730,260, "деятельность.bmp", -1, 100) //нашлась первая картинка
        $find1 = 1
        action("музыка.txt")       
    END_IF
END_IF
IF($find2 = 0)
    GETSCREEN
    COLORMODE(6)
    IF_PICTURE_IN(730,360,770,400, "интересы.bmp", -1, 100) //нашлась вторая картинка
        $find2 = 1
        action("интересы.txt")
    END_IF
END_IF


lahesis333

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: Однократный "проход" картинок.
« Reply #6 on: November 19, 2020, 10:59:41 AM »
Code: (clickermann) [Select]
SUB(action, $filename)
    IF($click1 < $_ms)
        LCLICK(840, 260)
        WAIT(1)
        FOR($i=1, $i <= TFCOUNT($filename))
            TOCLIP(TFREAD($filename, $i))
            WAITMS(1000)
            KEYDOWN(#CTRL)
            WAITMS(50)
            KEYPRESS(#V)
            KEYUP(#CTRL)
            WAITMS(50)
        END_CYC
        $click1 = $_ms+1000
    END_IF
END_SUB

IF($find1 = 0)
    GETSCREEN
    COLORMODE(6)
    IF_PICTURE_IN(710,230,730,260, "деятельность.bmp", -1, 100) //нашлась первая картинка
        $find1 = 1
        action("музыка.txt")       
    END_IF
END_IF
IF($find2 = 0)
    GETSCREEN
    COLORMODE(6)
    IF_PICTURE_IN(730,360,770,400, "интересы.bmp", -1, 100) //нашлась вторая картинка
        $find2 = 1
        action("интересы.txt")
    END_IF
END_IF
Ой спасибо! А скажите, если у меня таких картинок не две а например 3-4 и более это будет выглядеть так:
Code: [Select]
IF($find1 = 0)
    GETSCREEN
    COLORMODE(6)
    IF_PICTURE_IN(710,230,730,260, "деятельность.bmp", -1, 100) //нашлась первая картинка
        $find1 = 1
        action("музыка.txt")       
    END_IF
END_IF
IF($find2 = 0)
    GETSCREEN
    COLORMODE(6)
    IF_PICTURE_IN(730,360,770,400, "интересы.bmp", -1, 100) //нашлась вторая картинка
        $find2 = 1
        action("интересы.txt")
    END_IF
IF($find3 = 0)
    GETSCREEN
    COLORMODE(6)
    IF_PICTURE_IN(710,230,730,260, "деятельность.bmp", -1, 100) //нашлась первая картинка
        $find3 = 1
        action("музыка.txt")       
    END_IF
END_IF
IF($find4 = 0)
    GETSCREEN
    COLORMODE(6)
    IF_PICTURE_IN(730,360,770,400, "интересы.bmp", -1, 100) //нашлась вторая картинка
        $find4 = 1
        action("интересы.txt")
    END_IF
И как сделать, чтобы при новом появлении этих картинок(после того как было выполнено условие их однократного нахождения в первый раз) они снова находились и так же выполнялись по одному разу? Сейчас при запуске кода все ок, но при повторном их появлении действий не выполняется...

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Однократный "проход" картинок.
« Reply #7 on: November 19, 2020, 11:57:05 AM »
Если 3-4 то проще так. Аналогия правильная. Только END_IF в конце не хватает.
« Last Edit: November 19, 2020, 12:12:33 PM by Vint »


lahesis333

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: Однократный "проход" картинок.
« Reply #8 on: November 19, 2020, 11:59:37 AM »
Если 3-4 то проще так. Аналогия правильная. Только END_IF в конце не хватает.
Ну это я как быстрый пример-правильно ли я понял))А нет разницы, если у меня между этими "однократными" условиями будут картинки другие(которые могут искаться до момента пока не пропадают с экрана)?

lahesis333

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: Однократный "проход" картинок.
« Reply #9 on: November 19, 2020, 12:01:32 PM »
И как сделать, чтобы при новом появлении этих картинок(после того как было выполнено условие их однократного нахождения в первый раз) они снова находились и так же выполнялись по одному разу? Сейчас при запуске кода все ок, но при повторном их появлении действий не выполняется...
А вот с этой ерундой как разобраться?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Однократный "проход" картинок.
« Reply #10 on: November 19, 2020, 12:12:57 PM »
Если больше, можно оптимизировать кучей способов.
Например:
Code: (clickermann) [Select]
SUB(action, $filename)
    IF($click1 < $_ms)
        LCLICK(840, 260)
        WAIT(1)
        FOR($i=1, $i <= TFCOUNT($filename))
            TOCLIP(TFREAD($filename, $i))
            WAITMS(1000)
            KEYDOWN(#CTRL)
            WAITMS(50)
            KEYPRESS(#V)
            KEYUP(#CTRL)
            WAITMS(50)
        END_CYC
        $click1 = $_ms+1000
    END_IF
END_SUB

SUB(finder, $n_f, $x1_f, $x2_f, $y1_f, $y2_f, $pic_f, $act_f)
    IF($find[$n_f] = 0)
        GETSCREEN($x1_f, $x2_f, $y1_f, $y2_f)
        COLORMODE(6)
        IF_PICTURE_IN($x1_f, $x2_f, $y1_f, $y2_f, $pic_f)
            $find[$n_f] = 1
            action($act_f)
        END_IF
    END_IF
END_SUB

IF($repeat = 0)
    $repeat = 1
    STRSEPARATE("0:0:0:0:0:0:0", ":", $find)
END_IF

finder(0, 710,230,730,260, "деятельность.bmp", "музыка.txt")
finder(1, 730,360,770,400, "интересы.bmp", "интересы.txt")
finder(2, 200,200,222,222, "ехали.bmp", "ехали.txt")
finder(3, 300,300,333,333, "медведи.bmp", "медведи.txt")
finder(4, 300,300,333,333, "на.bmp", "на.txt")
finder(5, 300,300,333,333, "велосипеде.bmp", "велосипеде.txt")
finder(6, 300,300,333,333, "конец.bmp", "конец.txt")


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Однократный "проход" картинок.
« Reply #11 on: November 19, 2020, 12:18:18 PM »
И как сделать, чтобы при новом появлении этих картинок(после того как было выполнено условие их однократного нахождения в первый раз) они снова находились и так же выполнялись по одному разу? Сейчас при запуске кода все ок, но при повторном их появлении действий не выполняется...
Зачем ты мне приписываешь свои слова?  :)

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

Чтобы было как раньше, не используй этот код  ;D


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Однократный "проход" картинок.
« Reply #12 on: November 19, 2020, 12:25:47 PM »
Перезадай весь вопрос по другому с самого начала. Правильно продумай что тебе нужно, какие действия в какой ситуации должны происходить.


Вот с самого начала чуствовалась недосказанность, потому что 'Просто не учитывать уже найденные' - такое бывает. Но гораздо чаще их потом опять нужно учитывать. Когда наступает этот момент не указано. Решение простое для простого случая, но я не хочу предполагать и озвучивать его, лучше точно узнать что нужно в этом конкретном случае.
« Last Edit: November 19, 2020, 12:27:23 PM by Vint »


lahesis333

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: Однократный "проход" картинок.
« Reply #13 on: November 19, 2020, 12:43:35 PM »
Можно я задам вопрос с примером самого простого варианта с обычными кликами чтобы хотя бы понять вообще как это выглядит с простейшими условиями?))А то очень хочется не просто заниматься копипастом кодов с добавлением своих данных а хотя бы приблизительно понять как это работает :o
Code: [Select]
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file1.bmp", -1, 100)  //картинка1 появилась-нажимается пока не пропадет-пропала-ждем картинка2
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file2.bmp", -1, 100)   //картинка2 появилась-нажимается пока не пропадет-пропала- ждем картинка3
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
IF($find1 = 0)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file3.bmp", -1, 100)  //картинка3 появилась-нажалась однократно-не пропала-ждем картинка4
$find1 = 1//этот однократный клик повторять каждый раз после выполнения картинки5 и "старта цикла сначала" с картинки1   
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
IF($find2 = 0)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file4.bmp", -1, 100) // картинка4 появилась-нажалась однократно-не пропала-ждем картинка5
$find2 = 1 //этот однократный клик повторять каждый раз после выполнения картинки5 и "старта цикла сначала" с картинки1
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file5.bmp", -1, 100) //картинка5 появилась-нажимается пока не пропадет-пропала-ждем картинка1
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
Под "стартом цикла сначала" я подразумеваю что картинка5 нашлась и снова появляется картинка1,2,3 и тд.

lahesis333

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: Однократный "проход" картинок.
« Reply #14 on: November 19, 2020, 01:28:05 PM »
Я не слишком тупой для формирования вопроса? :'(А то мне кажется, что мои желания как то не вяжутся с принципами работы кликера...