Author Topic: Вопрос по SUB  (Read 5003 times)

0 Members and 1 Guest are viewing this topic.

justitdo

  • Освоившийся
  • **
  • Posts: 45
    • View Profile
Вопрос по SUB
« on: August 24, 2015, 01:05:29 PM »
Здравствуйте. Подскажите, пожалуйста, что написать в скрипте, чтобы подпрограмма SUB выполнялась не однократно, а до определенного условия?
В общем есть у меня 2 скрипта, я запускаю их вручную по очереди. Первый скрипт выполняется один раз и останавливается, а второй повторяется до тех пор, пока не изменится цвет указанного пикселя. Хочу объеденить эти 2 скрипта в один, записать каждый в подпрограмму SUB. Вот и возник вопрос, как сделать, чтобы вторая подпрограмма повторялась до заданного условия.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Вопрос по SUB
« Reply #1 on: August 24, 2015, 02:25:29 PM »
Очевидно что нужен цикл

Code: (clickermann) [Select]
$vkl = 1
WHILE($vkl = 1) // цикл
   
   
   
   IF($var = 3) // какое то условие срабатывает
      $vkl = 0 // выходим из цикла, меняем переменную
   END_IF
END_CYC

justitdo

  • Освоившийся
  • **
  • Posts: 45
    • View Profile
Re: Вопрос по SUB
« Reply #2 on: August 24, 2015, 09:08:06 PM »
Очевидно что нужен цикл

Code: (clickermann) [Select]
$vkl = 1
WHILE($vkl = 1) // цикл
   
   
   
   IF($var = 3) // какое то условие срабатывает
      $vkl = 0 // выходим из цикла, меняем переменную
   END_IF
END_CYC
Не могу разобраться((( Есть 2 подпрограммы SUB(A) и SUB(B).  Сначала однократно выполняется SUB(A), затем выполняется SUB(B) до тех пор пока пиксель не изменит цвет вот на этот (PXL(300,12) = 16777215). Далее SUB(B) останавливается, а воспроизведение скрипта продолжается. Напишите, пожалуйста код, как это должно выглядеть, а то я далек от всех этих циклов и прочего...

justitdo

  • Освоившийся
  • **
  • Posts: 45
    • View Profile
Re: Вопрос по SUB
« Reply #3 on: August 25, 2015, 08:07:46 PM »
Спасибо, все работает) Появился еще вопрос. Вот скрипт :
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (490,280, 1046, 473, "11.bmp")
dbLCLICK($_return1+50, $_return2+4)
WAITMS(50)
KEYDOWN (#CTRL) // Ctrl+C
WAITMS (50)
KEYDOWN (#C)
WAITMS (50)
KEYUP (#C)
KEYUP (#CTRL)
WAITMS (50)
$strclip = FROMCLIP()
WAITMS(50)
$comp = TFREAD("9999.txt", 1)
WAITMS(50)
$action = STRPOS($comp, $strclip)
IF($action > 0)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#F4)
WAITMS (50)
KEYUP (#F4)
KEYUP (#CTRL)
WAITMS(500)
ELSE
TFDELETE ("9999.txt", 1)
WAITMS(50)
TFWRITE("9999.txt", STRCONCAT($comp,$strclip," "))
WAITMS (150)
GETSCREEN
IF_PICTURE_IN (463,280, 675, 444, "9999.bmp")
LCLICK($_return1, $_return2)
WAITMS(RND(1305,2070))
LCLICK(68,609)  // 16777215
WAITMS(50)
INC($num,1)
 
IF($num > TFCOUNT ("511.txt"))
   $num = 1
END_IF
 
TOCLIP (TFREAD ("511.txt", $num))
WAITMS(RND(130,770))
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#V)
WAITMS (50)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS(RND(305,806))
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#ENTER)
WAITMS (50)
KEYUP (#ENTER)
KEYUP (#CTRL)
WAITMS(RND(2482,4602))
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#F4)
WAITMS (50)
KEYUP (#F4)
KEYUP (#CTRL)
WAITMS(RND(481,2053)))
LCLICK(329,634)  // 16777215
WAITMS (50)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#F4)
WAITMS (50)
KEYUP (#F4)
KEYUP (#CTRL)
WAITMS(RND(4703,10078))
END_IF


Куда мне в нем вписать ELSE чтобы указать действие, если не найдена картинка из самого первого условия?
« Last Edit: August 25, 2015, 08:09:34 PM by justitdo »

Полуночник

  • Активный участник
  • ***
  • Posts: 157
  • Умный не пошлёт на... он скажет -вы далеко пойдёте
    • View Profile
Re: Вопрос по SUB
« Reply #4 on: August 25, 2015, 08:49:54 PM »
Куда мне в нем вписать ELSE чтобы указать действие, если не найдена картинка из самого первого условия?
Вот
Code: [Select]
GETSCREEN
IF_PICTURE_IN (490,280, 1046, 473, "11.bmp")
   dbLCLICK($_return1+50, $_return2+4)
   WAITMS(50)
   KEYDOWN (#CTRL) // Ctrl+C
   WAITMS (50)
   KEYDOWN (#C)
   WAITMS (50)
   KEYUP (#C)
   KEYUP (#CTRL)
   WAITMS (50)
   $strclip = FROMCLIP()
   WAITMS(50)
   $comp = TFREAD("9999.txt", 1)
   WAITMS(50)
   $action = STRPOS($comp, $strclip)
   IF($action > 0)
      KEYDOWN (#CTRL)
      WAITMS (50)
      KEYDOWN (#F4)
      WAITMS (50)
      KEYUP (#F4)
      KEYUP (#CTRL)
      WAITMS(500)
   ELSE
      TFDELETE ("9999.txt", 1)
      WAITMS(50)
      TFWRITE("9999.txt", STRCONCAT($comp,$strclip," "))
      WAITMS (150)
      GETSCREEN
      IF_PICTURE_IN (463,280, 675, 444, "9999.bmp")
         LCLICK($_return1, $_return2)
         WAITMS(RND(1305,2070))
         LCLICK(68,609)  // 16777215
         WAITMS(50)
         INC($num,1)
         
         IF($num > TFCOUNT ("511.txt"))
            $num = 1
         END_IF
         
         TOCLIP (TFREAD ("511.txt", $num))
         WAITMS(RND(130,770))
         KEYDOWN (#CTRL)
         WAITMS (50)
         KEYDOWN (#V)
         WAITMS (50)
         KEYUP (#V)
         KEYUP (#CTRL)
         WAITMS(RND(305,806))
         KEYDOWN (#CTRL)
         WAITMS (50)
         KEYDOWN (#ENTER)
         WAITMS (50)
         KEYUP (#ENTER)
         KEYUP (#CTRL)
         WAITMS(RND(2482,4602))
         KEYDOWN (#CTRL)
         WAITMS (50)
         KEYDOWN (#F4)
         WAITMS (50)
         KEYUP (#F4)
         KEYUP (#CTRL)
         WAITMS(RND(481,2053)))
         LCLICK(329,634)  // 16777215
         WAITMS (50)
         KEYDOWN (#CTRL)
         WAITMS (50)
         KEYDOWN (#F4)
         WAITMS (50)
         KEYUP (#F4)
         KEYUP (#CTRL)
         WAITMS(RND(4703,10078))
      END_IF
   END_IF
ELSE
   //тут указываем действие если первое условие не выполнено
   LCLICK(0,0)     //ну например кликаем куда -тооооо
END_IF
И у тебя не завершены были условия. Для завершения IF надо ставить END_IF. Для самопроверки пользуйся автоподступом в редакторе.

justitdo

  • Освоившийся
  • **
  • Posts: 45
    • View Profile
Re: Вопрос по SUB
« Reply #5 on: August 25, 2015, 10:25:52 PM »
Все понял, спасибо. И еще проблемка нарисовалась... Обновил сегодня винду до 10, теперь при чтении текста из файла, считываются кракозябры, приходится каждый раз закрывать кликер, открывать этот текстовый файл, редактировать в нем хотя бы одну букву и сохранять заново, только после таких манипуляций кликер нормально распознает кодировку, и так каждый раз. Как победить?

Полуночник

  • Активный участник
  • ***
  • Posts: 157
  • Умный не пошлёт на... он скажет -вы далеко пойдёте
    • View Profile
Re: Вопрос по SUB
« Reply #6 on: August 25, 2015, 11:56:17 PM »
Вин10 не юзал не знаю. Где то на форуме видел решение каких то проблемм с вин 8, может и по вин 10 тоже есть.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Вопрос по SUB
« Reply #7 on: August 26, 2015, 07:21:48 AM »
Все понял, спасибо. И еще проблемка нарисовалась... Обновил сегодня винду до 10, теперь при чтении текста из файла, считываются кракозябры, приходится каждый раз закрывать кликер, открывать этот текстовый файл, редактировать в нем хотя бы одну букву и сохранять заново, только после таких манипуляций кликер нормально распознает кодировку, и так каждый раз. Как победить?
Не знаю работает ли это в 10ке...
Надо в реестре поправить параметры сопоставления кодировок
Code: [Select]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"

После этого требуется перезагрузка системы.

justitdo

  • Освоившийся
  • **
  • Posts: 45
    • View Profile
Re: Вопрос по SUB
« Reply #8 on: August 26, 2015, 08:22:15 PM »
Сделал, не помогло.

justitdo

  • Освоившийся
  • **
  • Posts: 45
    • View Profile
Re: Вопрос по SUB
« Reply #9 on: September 10, 2015, 01:28:01 PM »
Так и не решил проблему, откатился обратно на вин 7, тем более в 10 еще и виртуалбокс толком не работает.

Подскажите, как сделать, чтобы при каждом проигрывании скрипта чередовались клики по координатам? То есть я запускаю скрипт, идет клик по координатам (a,b), а когда он воспроизводится заново, клик идет уже по координатам (c,d), далее опять (a,b) и т.д. по очереди.