Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: SimplY on November 20, 2023, 04:22:59 PM
-
Доброго времени суток!))
Помогите найти проблему и подскажите, почему так происходит?
В общем, кликер ищет картинку. Если картинка найдена, то кликер кликает по ней и затем снова ищет эту же картинку и так до бесконечности. Допукается задержка 1 секунда после клика и перед новым поиском. Если нажата клавиша CTRL, то поиск картинки прекращается и скрипт продолжается.
Написал такой код для этого
tel:
$check = 0
WHILE($check = 0)
GETSCREEN(838,578,1706,1023)
IF_PICTURE_IN (838,578,1706,1023, "телмоб.bmp", -1, 80)
$check = 1
WAITMS(50)
$WNDF = WNDFIND("Связь с телефоном")
WAITMS(50)
WNDPOS($WNDF,135,190)
WAITMS(10)
WNDSIZE($WNDF,1408,844)
WAITMS(50)
LCLICK($_return1+12, $_return2+12)
WAITMS(300)
LCLICK(1425,201) // Закрыть телефон
WAITMS(300)
GOTO(tel)
ELSE
WAITMS(50)
END_IF
IF(ISKEYDOWN(#CTRL)=1)
$check = 1
WHILE(ISKEYDOWN(#CTRL)=1)
WAITMS(50)
END_CYC
END_IF
END_CYC
// Продолжение скрипта
и вроде бы он работает, но если нажать CTRL c 10 раза. Причем кол-во нажатий для продолжения скрипта рандомное. Может через 2 раза, может через 20 раз. Почему это происходит? Как это убрать? Нужно, чтобы достаточно 1 раза было.
-
Как минимум сделать правильно - убрать выпрыгивание по GOTO из цикла. Тем более, что оно здесь не нужно совсем.
Для этого удалить строки 18, 6, 1
А по поводу CTRL его нажатие проверяется только в месте выполнения ISKEYDOWN. Соответственно, если картинка найдена, то там пауз минимум на
300+300+50+50+50+10+поиск с % ≈ 1 сек.
9 и 7 строка тоже не нужны тут было пара товарищей любителей пихать после всех условий задержки, а люди потом за ними повторяют. Это вредные паразитные задержки непонятно с какой целью вставленные.
Если хочешь прям чёткого срабатывания после единичного короткого нажатия в любой момент, то нужно следить за клавишей в потоке.
THREAD(break_key_th, 0)
IF(ISKEYDOWN(#CTRL) = 1)
$break_key = 1
WHILE(ISKEYDOWN(#CTRL) = 1)
WAITMS(50)
END_CYC
SETTHREAD(break_key_th, 2)
ELSE
WAITMS(50)
END_IF
END_THREAD
SETTHREAD(break_key_th, 1)
$break_key = 0
WHILE($break_key= 0)
GETSCREEN(838,578,1706,1023)
IF_PICTURE_IN(838,578,1706,1023, "телмоб.bmp", -1, 80)
$WNDF = WNDFIND("Связь с телефоном")
WNDPOS($WNDF, 135, 190)
WAITMS(10)
WNDSIZE($WNDF, 1408, 844)
WAITMS(50)
LCLICK($_return1+12, $_return2+12)
WAITMS(300)
LCLICK(1425, 201) // Закрыть телефон
WAITMS(300)
ELSE
WAITMS(50)
END_IF
END_CYC
// Продолжение скрипта
после нажатия выход произойдёт не сразу, долбить не нужно. Просто выйдет из цикла когда закончит всеклики с паузами написанные в цикле - если картинка в тот момент найдена.