Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: justitdo on August 24, 2015, 01:05:29 PM
-
Здравствуйте. Подскажите, пожалуйста, что написать в скрипте, чтобы подпрограмма SUB выполнялась не однократно, а до определенного условия?
В общем есть у меня 2 скрипта, я запускаю их вручную по очереди. Первый скрипт выполняется один раз и останавливается, а второй повторяется до тех пор, пока не изменится цвет указанного пикселя. Хочу объеденить эти 2 скрипта в один, записать каждый в подпрограмму SUB. Вот и возник вопрос, как сделать, чтобы вторая подпрограмма повторялась до заданного условия.
-
Очевидно что нужен цикл
$vkl = 1
WHILE($vkl = 1) // цикл
IF($var = 3) // какое то условие срабатывает
$vkl = 0 // выходим из цикла, меняем переменную
END_IF
END_CYC
-
Очевидно что нужен цикл
$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) останавливается, а воспроизведение скрипта продолжается. Напишите, пожалуйста код, как это должно выглядеть, а то я далек от всех этих циклов и прочего...
-
Спасибо, все работает) Появился еще вопрос. Вот скрипт :
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 чтобы указать действие, если не найдена картинка из самого первого условия?
-
Куда мне в нем вписать ELSE чтобы указать действие, если не найдена картинка из самого первого условия?
Вот
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. Для самопроверки пользуйся автоподступом в редакторе.
-
Все понял, спасибо. И еще проблемка нарисовалась... Обновил сегодня винду до 10, теперь при чтении текста из файла, считываются кракозябры, приходится каждый раз закрывать кликер, открывать этот текстовый файл, редактировать в нем хотя бы одну букву и сохранять заново, только после таких манипуляций кликер нормально распознает кодировку, и так каждый раз. Как победить?
-
Вин10 не юзал не знаю. Где то на форуме видел решение каких то проблемм с вин 8, может и по вин 10 тоже есть.
-
Все понял, спасибо. И еще проблемка нарисовалась... Обновил сегодня винду до 10, теперь при чтении текста из файла, считываются кракозябры, приходится каждый раз закрывать кликер, открывать этот текстовый файл, редактировать в нем хотя бы одну букву и сохранять заново, только после таких манипуляций кликер нормально распознает кодировку, и так каждый раз. Как победить?
Не знаю работает ли это в 10ке...
Надо в реестре поправить параметры сопоставления кодировок
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"
После этого требуется перезагрузка системы.
-
Сделал, не помогло.
-
Так и не решил проблему, откатился обратно на вин 7, тем более в 10 еще и виртуалбокс толком не работает.
Подскажите, как сделать, чтобы при каждом проигрывании скрипта чередовались клики по координатам? То есть я запускаю скрипт, идет клик по координатам (a,b), а когда он воспроизводится заново, клик идет уже по координатам (c,d), далее опять (a,b) и т.д. по очереди.