Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Kibes on January 03, 2019, 12:54:22 AM
-
Помогите плз, есть такая часть кода:
getscreen
// поиск изображения pict.bmp в области 0,0 - 1250,959
scanpicture($var, 0,0, 1250,959, "pict.bmp")
// вывод массива, содержащего результаты поиска
while (arrsize($var) > 0)
$y = arrpop($var)
$x = arrpop($var)
print($x,":", $y)
end_cyc
Так вот я хочу получить не только координаты, а и порядковый номер координат. Указал типа:
print($var,":", $x,":", $y)
Получаю вот такое:
23:22:34 1140: 1239:66
23:22:37 1140: 1206:66
23:22:40 1140: 1173:66
23:22:42 0: 1140:66
Помогите, пожалуйста
-
Конечно можно было и подсчитывать из того примера что ты дал, но проще будет вот так:
getscreen
undefine($var)//обнуляем массив если нужно
// поиск изображения pict.bmp в области 0,0 - 1250,959
scanpicture($var, 0,0, 1250,959, "pict.bmp")
// вывод массива, содержащего результаты поиска
FOR($i=0,$i<arrsize($var),2)
$x = $var[$i]
$y = $var[$i+1]
print("Pic ",$i/2," -- ", $x,":", $y)
END_CYC
halt
На выходе будет как то так:
1:02:37 Pic 0 -- 1111:2222
1:02:37 Pic 1 -- 2222:3333
1:02:37 Pic 2 -- 4444:5555
-
Отлично то, что нужно! Спасибо за оперативность :)
А можно как-то заставить мышку рандомно клацать по найденным картинкам? Пока только получилось по очереди перебирать
-
Вот тебе рандомные клики
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, 1250,959, "pict.bmp", 0, 100)
$siz = ARRSIZE($ARR_SCAN)
IF($siz > 0)
FOR($a=0,$a<$siz,2)
ARRPUSH($ARR, $a)
END_CYC
$i = ARRSIZE($ARR)-1
WHILE($i>0)
$j = RND(0,$i)
IF($i ! $j)
$tmp = $arr[$j]
$ARR[$j] = $ARR[$i]
$ARR[$i] = $tmp
END_IF
INC($i,-1)
END_CYC
FOR($ARR_NUM=0,$ARR_NUM<$siz/2)
LCLICK($ARR_SCAN[$ARR[$ARR_NUM]], $ARR_SCAN[$ARR[$ARR_NUM]+1])
WAITMS(100)
END_CYC
UNDEFINE($ARR_SCAN)
UNDEFINE($ARR)
END_IF
-
Вот тебе рандомные клики
??? как-то сложно.
У меня такая схема действий сразу сложилась:
1. получить рандомное число в пределах размера массива.
2. вырвать эти два элемента из массива.
3. готово.
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, 1250,959, "pict.bmp", 0, 100)
while (arrsize($var) > 0)
$rnd = int(rnd(0,arrsize($var)-1)/2) * 2 //рандомное четное число в пределах размера массива
$x = $var[$rnd] //берем эти рандомные два элемента
$y = $var[$rnd+1]
print($x,":", $y) //проверяем
IF($rnd+2 = arrsize($var)) //убираем из массива использованные
$del = arrpop($var)
$del = arrpop($var)
else
$var[$rnd+1] = arrpop($var)
$var[$rnd] = arrpop($var)
END_IF
// LCLICK($x, $y) // ну и клик c задержкой если нужно
//wait(1)
end_cyc
halt
-
Спасибо!
Вот еще вопросик! Этот массив у меня работает как отдельный поток:
thread(t1)
...
end_thread
Я попытался подвязать вот этот скрипт: http://crapware.aidf.org/forum/index.php?topic=2112.msg12603#msg12603
Но этот скрипт работает, если его разместить непосредственно в теле самого потока. А никак нельзя его вызывать из основного кода программы?
-
Подпрограмма должна быть описана внутри потока. То есть в каждом потоке по своему описанию.
Проблема в том что переменные в потоках не изолированы, поэтому исключи возможность вызова этой подпрограммы одновременно больше чем в одном потоке.
-
У меня такая схема действий сразу сложилась:
1. получить рандомное число в пределах размера массива.
2. вырвать эти два элемента из массива.
3. готово.
GETSCREEN
SCANPICTURE($var, 0,0, 1250,959, "pict.bmp", 0, 100)
while (arrsize($var) > 0)
$rnd = int(rnd(0,arrsize($var)-1)/2) * 2 //рандомное четное число в пределах размера массива
$x = $var[$rnd] //берем эти рандомные два элемента
$y = $var[$rnd+1]
print($x,":", $y) //проверяем
IF($rnd+2 = arrsize($var)) //убираем из массива использованные
$del = arrpop($var)
$del = arrpop($var)
else
$var[$rnd+1] = arrpop($var)
$var[$rnd] = arrpop($var)
END_IF
// LCLICK($x, $y) // ну и клик c задержкой если нужно
//wait(1)
end_cyc
halt
Подскажите, а как в логе вывести какая картинка по счету найдена (не нажата)? Не спешил спрашивать, пытался разобраться по этому примеру: http://crapware.aidf.org/forum/index.php?topic=4399.msg30060#msg30060 указал $rnd/2, но не получается... :(
-
Подскажите, а как в логе вывести какая картинка по счету? Не спешил спрашивать, пытался разобраться по этому примеру: http://crapware.aidf.org/forum/index.php?topic=4399.msg30060#msg30060 Но не получается :(
Ну видимо print($rnd+1)
-
Подскажите, а как в логе вывести какая картинка по счету найдена (не нажата)? Не спешил спрашивать, пытался разобраться по этому примеру: http://crapware.aidf.org/forum/index.php?topic=4399.msg30060#msg30060 указал $rnd/2, но не получается... :(
Ну видимо print($rnd+1)
Нет, получается вот так:
21:09:38 7-1205:185
21:09:38 1-1106:185
21:09:38 3-1139:185
21:09:38 1-1237:185
21:09:38 1-1172:185
Всего 5 картинок сейчас, хотел бы рядом с координатами видеть порядковый номер картинки, типа вот так:
21:09:38 4-1205:185
21:09:38 1-1106:185
21:09:38 2-1139:185
21:09:38 5-1237:185
21:09:38 3-1172:185
-
Подскажите, а как в логе вывести какая картинка по счету найдена (не нажата)? Не спешил спрашивать, пытался разобраться по этому примеру: http://crapware.aidf.org/forum/index.php?topic=4399.msg30060#msg30060 указал $rnd/2, но не получается... :(
Из моего варианта так просто узнать номер не выйдет, так как там массив уменьшается после каждого выбора рандомных элементов, при этом последний вставляется вместо удаленного.
Можно немного переделать массив, добавить нумерацию элементов.
Как то так:
GETSCREEN
SCANPICTURE($arr, 0,0, 1250,959, "pict.bmp", 0, 100)
FOR($a=0,$a<arrsize($arr), 2) //переписываем массив в "трехмерный" с нумерацией картинок
arrpush($var,$arr[$a])
arrpush($var,$arr[$a+1])
arrpush($var,$a/2 + 1) //это номер
END_CYC
while (arrsize($var) > 0)
$rnd = int(rnd(0,arrsize($var)-1)/3) * 3 //рандомное кратное трем число в пределах размера массива
$x = $var[$rnd] //берем эти рандомные три элемента
$y = $var[$rnd+1]
$n = $var[$rnd+2] //это номер
print("КАРТИНКА №",$n , ", в координатах - ",$x,":", $y) //проверяем
IF($rnd+3 = arrsize($var)) //убираем из массива использованные
$del = arrpop($var)
$del = arrpop($var)
$del = arrpop($var)
else
$var[$rnd+2] = arrpop($var)
$var[$rnd+1] = arrpop($var)
$var[$rnd] = arrpop($var)
END_IF
// LCLICK($x, $y) // ну и клик c задержкой если нужно
//wait(1)
end_cyc
UNDEFINE($arr)
halt
-
Спасибо! То что доктор прописал :)