Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Ramzesia on June 14, 2017, 11:47:47 AM
-
Как реализовать цыкл? Нужно удерживать зажатой клавишу до появления пикселя.
Что то ти по этого, но это не работает.
//Скрипт
KEYDOWN(#C)
$check = 0 // Тут клавиша отжимается, а нужно что бы была зажата до появления пикселя 7-ой строки
WHILE($check = 0)
GETSCREEN (246,544, 248,546)
COLORMODE (246,544, 248,546)
IF_PIXEL_IN(247,545, 4194175)
$check = 1
KEYPRESS(#c)
WAITMS(100)
ELSE
WAITMS(50)
END_IF
END_CYC
// Продолжить скрипт
-
Ошибка в седьмой строке. Должно быть или:
IF_PIXEL_IN(246,544, 248,546, 4194175)
или:IF(PXL(247,545)=4194175)
-
И вместо
KEYPRESS(#c)
должно быть отжатие
KEYUP(#C)
-
А где уровень цветокоррекции??
COLORMODE (246,544, 248,546)
-
Как реализовать цыкл?
В слове "цыкл" ошибка. Правильно будет- ЦИКЛ. :) ;) :D ;D
-
Не в обиду ребят, но мы вить не на уроке русского языка :) да и я спрашивал как удержать клавишу нажатой до тех пор пока пиксель не найдется.
//Скрипт
KEYDOWN(#C)
$check = 0 // Тут клавиша отжимается, а нужно что бы была зажата до появления пикселя 6-ой строки
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN(241,544, 243,546, 3851877)
$check = 1
KEYUP(#c)
WAITMS(100)
ELSE
WAITMS(50)
END_IF
END_CYC
// Продолжить скрипт
-
Вот так верно, только укажи уровень цветокоррекции
//Скрипт
KEYDOWN(#C)
WAITMS(50)
$check = 0 // Тут клавиша отжимается, а нужно что бы была зажата до появления пикселя 7-ой строки
WHILE($check = 0)
GETSCREEN (247,545, 247,545)
COLORMODE (?,247,545, 247,545)
IF(PXL(247,545) = 4194175)
KEYUP(#C)
WAITMS(100)
$check = 1
ELSE
WAITMS(10)
END_IF
END_CYC
// Продолжить скрипт
-
Не работает. Около секунды клавиша зажата, как заходит в цикл сразу отжимается. :'(
-
Не работает. Около секунды клавиша зажата, как заходит в цикл сразу отжимается. :'(
Да что-ж там у тебя с этими зажатиями? Может так?...//Скрипт
KEYDOWN(#C)
WAITMS(50)
$check = 0 // Тут клавиша отжимается, а нужно что бы была зажата до появления пикселя 7-ой строки
WHILE($check = 0)
GETSCREEN (247,545, 247,545)
COLORMODE (6,247,545, 247,545)
IF(PXL(247,545) = 4194175)
KEYUP(#C)
WAITMS(100)
$check = 1
ELSE
WAITMS(10)
KEYDOWN(#C)
END_IF
END_CYC
// Продолжить скрипт
-
Не работает. Около секунды клавиша зажата, как заходит в цикл сразу отжимается. :'(
Да что-ж там у тебя с этими зажатиями? Может так?...//Скрипт
KEYDOWN(#C)
WAITMS(50)
$check = 0 // Тут клавиша отжимается, а нужно что бы была зажата до появления пикселя 7-ой строки
WHILE($check = 0)
GETSCREEN (247,545, 247,545)
COLORMODE (6,247,545, 247,545)
IF(PXL(247,545) = 4194175)
KEYUP(#C)
WAITMS(100)
$check = 1
ELSE
WAITMS(10)
KEYDOWN(#C)
END_IF
END_CYC
// Продолжить скрипт
А вот так РАБОТАЕТ :) :-* Походу я так пробовал но из за ошибки с иф пиксель не сработало. Спасибо всем огромное, пойду допиливать нюансы ) это я так понимаю он около 80 нажатий клавиши "С" сейчас будет делать?
-
А вот так РАБОТАЕТ ...это я так понимаю он около 80 нажатий клавиши "С" сейчас будет делать?
Вот теперь стало понятно что именно у тебя не работало. Точнее всё работало, но ты думал что должно быть всё по другому.
Сейчас сделали многократное зажатие кнопки без отпускания KEYDOWN(#C). Но приложение может реагировать правильно и предварительно отпускать.
Твоя ошибка в том, что "зажать" клавишу это не то что ты думаешь. Это именно зажать (как бег в игре, например). При зажатии никакого автоповтора нет. Если ты ожидал как в редакторе при зажатии пишет "ccccccccccccccccc". Автоповтор - это возможности драйвера физической клавиатуры и им он реализован. Поэтому если нужно не зажатие, а многократное нажатие (или автоповтор), ты должен позаботиться об этом сам прописав в цикле.
-
А вот так РАБОТАЕТ ...это я так понимаю он около 80 нажатий клавиши "С" сейчас будет делать?
Вот теперь стало понятно что именно у тебя не работало. Точнее всё работало, но ты думал что должно быть всё по другому.
Я понял тебя но не могу никак понять как зациклить, вот часть скрипта помоги правильно поставить "Зажатие С, Х"
for($var2=0, $var2 < 3)
KEYDOWN(#C) // зажата кнопка с
KEYDOWN(#X) // зажата кнопка х
WAITMS(1500)
END_CYC
$time2 = $_time_t + 10
WHILE($time2 > $_time_t)
GETSCREEN(2,36, 961,575)
COLORMODE(6, 2,36, 961,575)
IF_PICTURE_IN (2,36, 961,575, "texture\Okno.bmp", 52275, 90) // До этого окна нужно удерживать клавиши С, Х. А после его появления отпустить
$time2 = 0
KEYUP(#c) // отпустить кнопку с
KEYUP(#x) // отпустить кнопку х
WAITMS(100)
LCLICK($_return1+315, $_return2+63)
WAITMS(RND(170,210))
ELSE
WAITMS(50)
END_IF
END_CYC
IF($time2 ! 0) // если картинка Okno.bmp не была найдена
KEYUP(#c) // отпустить кнопку с
KEYUP(#x) // отпустить кнопку х
END_IF
Вот так? Или можно, как то попроще сделать?
KEYDOWN(#C) // зажата кнопка с
KEYDOWN(#X) // зажата кнопка х
WAITMS(100)
$time2 = $_time_t + 10
WHILE($time2 > $_time_t)
GETSCREEN(2,36, 961,575)
COLORMODE(6, 2,36, 961,575)
IF_PICTURE_IN (2,36, 961,575, "texture\Okno.bmp", 52275, 90) // До этого окна нужно удерживать клавиши С, Х. А после его появления отпустить
$time2 = 0
KEYUP(#c) // отпустить кнопку с
KEYUP(#x) // отпустить кнопку х
WAITMS(100)
LCLICK($_return1+315, $_return2+63)
WAITMS(RND(170,210))
ELSE
WAITMS(50)
KEYDOWN(#C) // зажата кнопка с
KEYDOWN(#X) // зажата кнопка х
END_IF
END_CYC
IF($time2 ! 0) // если картинка Okno.bmp не была найдена
KEYUP(#c) // отпустить кнопку с
KEYUP(#x) // отпустить кнопку х
END_IF
-
Многократное написание KEYDOWN приводит к многократному нажатию этой клавиши.
WAITMS(50)
KEYDOWN(#C) // зажата кнопка с
KEYDOWN(#X) // зажата кнопка х
WAITMS(50)
KEYDOWN(#C) // зажата кнопка с
KEYDOWN(#X) // зажата кнопка х
WAITMS(50)
KEYDOWN(#C) // зажата кнопка с
KEYDOWN(#X) // зажата кнопка х
Твой скрипт в цикле будет постоянно нажимать CX
-
Мне нужно что бы эти две клавиши были зажаты до тех пор пока не появится окно.
В этом случае окно висит лишнее время пока не пройдет цикл с клавишами
for($var2=0, $var2 < 3)
KEYDOWN(#C) // зажата кнопка с
KEYDOWN(#X) // зажата кнопка х
WAITMS(1500)
END_CYC
//Дальше не срабатывает сразу ждет цикл выше а окно иногда появляется раньше и висит лишние 2+/- сек
$time2 = $_time_t + 10
WHILE($time2 > $_time_t)
GETSCREEN(2,36, 961,575)
COLORMODE(6, 2,36, 961,575)
IF_PICTURE_IN (2,36, 961,575, "texture\Okno.bmp", 52275, 90) // До этого окна нужно удерживать клавиши С, Х. А после его появления отпустить
$time2 = 0
KEYUP(#c) // отпустить кнопку с
KEYUP(#x) // отпустить кнопку х
WAITMS(100)
LCLICK($_return1+315, $_return2+63)
WAITMS(RND(170,210))
ELSE
WAITMS(50)
END_IF
END_CYC
IF($time2 ! 0) // если картинка Okno.bmp не была найдена
KEYUP(#c) // отпустить кнопку с
KEYUP(#x) // отпустить кнопку х
END_IF
Если сделать просто нажатие, то клавиши отпускаются после начала цикла поиска окна.
KEYDOWN(#C) // зажата кнопка с
KEYDOWN(#X) // зажата кнопка х
$time2 = $_time_t + 10 // После этого клавиши отпускаются а картинки еще нет и рыба уходит
WHILE($time2 > $_time_t)
GETSCREEN(2,36, 961,575)
COLORMODE(6, 2,36, 961,575)
IF_PICTURE_IN (2,36, 961,575, "texture\Okno.bmp", 52275, 90) // До этого окна нужно удерживать клавиши С, Х. А после его появления отпустить
$time2 = 0
KEYUP(#c) // отпустить кнопку с
KEYUP(#x) // отпустить кнопку х
WAITMS(100)
LCLICK($_return1+315, $_return2+63)
WAITMS(RND(170,210))
ELSE
WAITMS(50)
END_IF
END_CYC
А мне нужно следующее...
//Нажать клавиши и удерживать их
KEYDOWN(#C) // зажата кнопка с
KEYDOWN(#X) // зажата кнопка х
//Найти картинку и только потом отпустить их
IF_PICTURE_IN (2,36, 961,575, "texture\Okno.bmp", 52275, 90)
//Отпустить клавиши
//Сделать действие если нашли
LCLICK($_return1+315, $_return2+63)
-
ЧЁ опять не устраивает? Не пойму...
В начале вообще не надо делать зажатия.
Пиши их в блоке ELSE.
$time2 = $_time_t + 10
WHILE($time2 > $_time_t)
GETSCREEN(2,36, 961,575)
COLORMODE(6, 2,36, 961,575)
IF_PICTURE_IN (2,36, 961,575, "texture\Okno.bmp", 52275, 90)
$time2 = 0
KEYUP(#c) // отпустить кнопку с
KEYUP(#x) // отпустить кнопку х
WAITMS(100)
LCLICK($_return1+315, $_return2+63)
WAITMS(RND(170,210))
ELSE
WAITMS(100)
KEYDOWN(#C) // зажата кнопка с
KEYDOWN(#X) // зажата кнопка х
END_IF
END_CYC
-
Вот теперь стало понятно что именно у тебя не работало. Точнее всё работало, но ты думал что должно быть всё по другому.
Я понял тебя но не могу никак понять как зациклить, вот часть скрипта помоги правильно поставить "Зажатие С, Х"
Если сделать просто нажатие, то клавиши отпускаются после начала цикла поиска окна.
Понял, но видимо не до конца. Попробую немножко дополнить объяснение Винта.
1. Существует реальная (физическая) клавиатура. Прежде чем сигнал от нее дойдет куда следует, он обрабатывается драйвером клавиатуры. Клавиатура дает один сигнал,иногда драйвер его видоизменяет (например превращает сигнал от зажатой клавиши С в повторяющиеся через несколько милисекунд нажатия этой кнопки - и ты видишь "СССССССССССС").
Автоповтор - это возможности драйвера физической клавиатуры и им он реализован.
2. Существует некое приложение, которое ожидает, что нажатие С или Х происходит на реальной клавиатуре (т.е. ждет сигнала с клавиатуры уже обработанного драйвером клавиатуры).
3. Но тут появляется виртуальная клавиатура, сигнал которой соответствует сигналу реальной клавиатуры, но НЕ обработанной тем драйвером.
4. Абсолютно закономерно ожидания этого приложения (и твои) иногда могут оказаться нереализованными, т.к. сигнал клавиатуры не всегда совпадает с сигналом обработанным драйвером.
5. И вот если такое происходит, чтобы все работало, тебе самому придется имитировать работу драйвера физической клавиатуры - т.е. сделать повторяющиеся через короткий промежуток времени нажатия клавиши (писать их в цикле в ELSE, как показали выше).
Вывод: скрипт делает ровно то, что ты ему скажешь - отпускания кнопки не происходит. Но у тебя приложение ожидает несколько иной сигнал.
-
5. И вот если такое происходит, чтобы все работало, тебе самому придется имитировать работу драйвера физической клавиатуры - т.е. сделать повторяющиеся через короткий промежуток времени нажатия клавиши (писать их в цикле в ELSE, как показали выше).
Я понял Винта правильно и выложил свой вариант, я просил посмотреть правильно ли написал.
KEYDOWN(#C) // зажата кнопка с
KEYDOWN(#X) // зажата кнопка х
WAITMS(100)
$time2 = $_time_t + 10
WHILE($time2 > $_time_t)
GETSCREEN(2,36, 961,575)
COLORMODE(6, 2,36, 961,575)
IF_PICTURE_IN (2,36, 961,575, "texture\Okno.bmp", 52275, 90)
$time2 = 0
KEYUP(#c) // отпустить кнопку с
KEYUP(#x) // отпустить кнопку х
WAITMS(100)
LCLICK($_return1+315, $_return2+63)
WAITMS(RND(170,210))
ELSE
WAITMS(50)
KEYDOWN(#C) // зажата кнопка с
KEYDOWN(#X) // зажата кнопка х
END_IF
END_CYC
IF($time2 ! 0) // если картинка Okno.bmp не была найдена
KEYUP(#c) // отпустить кнопку с
KEYUP(#x) // отпустить кнопку х
END_IF
Да и если до скрипта не писать нажатие, то через раз не работает, не знаю с чем это связано.
-
Нет не правильно, как я уже писал KEYDOWN при втором вызове отжимает и снова зажимает клавишу.
Получается что при отсутствии Okno.bmp у тебя скрипт будет постоянно строчить по CX
-
Получается что при отсутствии Okno.bmp у тебя скрипт будет постоянно строчить по CX
А разве это не отменяет вот эта часть кода?
IF($time2 ! 0) // если картинка Okno.bmp не была найдена
KEYUP(#c) // отпустить кнопку с
KEYUP(#x) // отпустить кнопку х
END_IF