Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: ssanarhist on October 08, 2014, 01:35:00 AM
-
Сценарий такой. При нахождении заданного изображения (1) нажимается клавиша (1) и держится. Ищется следующее изображение (2), при нахождении клавиша (1) отпускается и нажимается клавиша (2), если не нашло - клавиша (1) удерживается.
Для второй клавиши: при нажатии клавиши (2) ищется изображение (3), если находит - клавиша отпускается и переходит к изображению (1), если нет - держится дальше.
Помогите составить, пожалуйста. Замучился уже.
-
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 100) // ищем картинку 1
KEYDOWN(#1) // зажимаем клавишу 1
WAITMS(100)
$check1 = 0
WHILE($check1 = 0)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 100) // ищем картинку 2
$check1 = 1
KEYUP(#1) // отпускаем клавишу 1
WAITMS(50)
KEYDOWN(#2) // зажимаем клавишу 2
WAITMS(100)
$check2 = 0
WHILE($check2 = 0)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "3.bmp", -1, 100) // ищем картинку 3
$check2 = 1
KEYUP(#2) // отпускаем клавишу 2
WAITMS(100)
ELSE
WAITMS(50)
END_IF
END_CYC
ELSE
WAITMS(50)
END_IF
END_CYC
END_IF
-
Спасибо, работает. Но проходит только один раз, а как его зациклить на повторение? И если не нашло изображение 1 - пропустить эти операции и перейти по коду дальше?
-
Спасибо, работает. Но проходит только один раз, а как его зациклить на повторение? И если не нашло изображение 1 - пропустить эти операции и перейти по коду дальше?
Кликер по умолчанию выполняет скрипты бесконечно.
Если картинка 1 не найдена то выполнение перескочит к строке 29, если дальше ничего нет то скрипт начнется сначала.
-
1. if(iskeydown(1)=1)
$x=$_xmouse
$y=$_ymouse
LOGWRITE ("Êîîðäèíàòû: ",$x," ",$y)
Else
WAITMS(RND(50,74))
GETSCREEN
IF_PICTURE_IN (331,241, 586, 326, "svr.bmp")
goto(e)
END_IF
GETSCREEN
IF_PICTURE_IN (194,631, 393, 797, "ne.bmp")
e:
WAITMS(RND(3580,5011))
KEYDOWN(#ALT)
WAITMS(60)
KEYPRESS(#S)
WAITMS(60)
KEYUP(#ALT)
LOGWRITE ("Îñòàíîâèëè ïðîãðàììó")
Else
GETSCREEN
IF_PICTURE_IN (905,9, 1019, 68, "pr.bmp")
WAITMS(RND(1376,2604))
KEYPRESS(#T)
LOGWRITE ("Çàáðîñèëè")
WAITMS(RND(1376,6604))
b:
GETSCREEN
IF_PICTURE_IN (1,267,945,487,"k.bmp")
WAITMS(RND(176,4604))
KEYPRESS(#SPACE)
WAITMS(RND(188,1102))
LOGWRITE ("Êëþíóëà")
LOGWRITE ("Òÿíåì")
Goto(c)
Else
Goto(b)
2. c:
GETSCREEN
IF_PICTURE_IN (13,460, 970, 542, "sh.bmp")
KEYDOWN(#H)
LOGWRITE ("H")
WAITMS(100)
$check1 = 0
WHILE($check1 = 0)
GETSCREEN
COLORMODE(6)
IF_PIXEL_IN (0,486, 1024,512, 4145151, 4161471)
$check1 = 1
KEYUP(#H)
LOGWRITE ("H")
WAITMS(50)
KEYDOWN(#G)
LOGWRITE ("G")
WAITMS(100)
$check2 = 0
WHILE($check2 = 0)
GETSCREEN
COLORMODE(6)
IF_PIXEL_IN (0,513, 1024,546, 4145151, 4161471)
$check2 = 1
KEYUP(#G)
LOGWRITE ("G")
WAITMS(100)
ELSE
WAITMS(50)
END_IF
END_CYC
ELSE
WAITMS(50)
END_IF
END_CYC
END_IF
goto(c)
Else
3. GETSCREEN
IF_PICTURE_IN (382,332, 750, 497, "so.bmp")
WAITMS(RND(2353,2975))
screenshot
KEYPRESS(#ENTER)
LOGWRITE ("Âû ÷åãî-òî âûïîëíèëè")
END_IF
Это часть кода. Ваш код в чистом виде работает, но не совсем так как хотелось бы. Объясню.
мне пришлось заменить второе и третье изображение проверкой цвета - это была моя ошибка, изображения все время меняются. С проверкой цвета работает.
При запуске с Вашим кодом действует до END_CYC END_IF один раз и переходит в самое начало кода (1). С помощью Goto(c) я этот вопрос решил, но Else после Goto не срабатывает. Код полностью зацикливает от с: до Goto(c). Не переходит к пункту 3. Как это побороть?
-
Каждый IF_ должен завершиться своим END_IF у тебя их там порядком не хватает. Отсюда и бредокод.
-
Это часть кода. Большинство END_IF в конце всего кода. Или они должны быть именно после каждой операции IF?
-
Заработало. Решение найдено. Спасибо за помощь.