Автокликер Clickermann :: Форум
Основной раздел => Использование => Topic started by: Луций on January 04, 2016, 01:40:39 PM
-
задача: на экране есть несколько кнопок, нужно их все прокликать, после клика появляется диалоговое окно и еще десяток кнопок (других) и нужно кликнуть рандомно одну из них, я написал код (с помощью оравена) но так как задача довольно популярна решил создать тему тут, в коде не работает вторая часть (рандомный клик) хотелось бы сделать ее универсальной и избавиться от костылей
begin:
print("new turn")
getscreen
scanpicture($arr, 0,0, $_xmax, $_ymax, "chat.bmp")
while (arrsize($arr) > 0)
print("pictures found")
$y = arrpop($arr)
$x = arrpop($arr)
lclick($x, $y)
WAIT(1)
getscreen
scanpicture($var, 0,0, $_xmax, $_ymax, "send.bmp")
$rnd = rndfrom(0,2,4,6,8,10,12,14,16,18)
$x = $var[$rnd]
$y = $var[$rnd+1]
undefine($var)
lclick($x, $y)
WAIT(1)
pic("send.bmp")
end_cyc
undefine($arr)
-
Не работает может потому что один из способов обращения к массиву (arrpop или по индексу) даёт строку?
При введении массивов кажется строку давал arrpop. Потом поправили.
В 4.11 сломали по индексу.
Для универсальности не использовать rndfrom, перевести на RND.
Какие ещё костыли?...
Ну я бы ещё проверял при поиске send.bmp нашлось ли вообще что нибудь, а лучше ждать чтобы массив не был пустым.
getscreen
scanpicture($arr, 0,0, $_xmax, $_ymax, "chat.bmp")
while (arrsize($arr) > 0)
print("pictures found")
$y = arrpop($arr)
$x = arrpop($arr)
lclick($x, $y)
WAIT(1)
getscreen
scanpicture($var, 0,0, $_xmax, $_ymax, "send.bmp")
WHILE(arrsize($var) = 0)
WAITMS(500)
getscreen
scanpicture($var, 0,0, $_xmax, $_ymax, "send.bmp")
END_CYC
$rnd = RND(0, (arrsize($var) / 2)-1)
$x = INT($var[$rnd*2])
$y = INT($var[$rnd*2+1])
undefine($var)
lclick($x, $y)
WAIT(1)
pic("send.bmp")
end_cyc
undefine($arr)
-
как не странно - рандомайзер заработал, вариант с строчным выводом аррпопа мне в голову не пришел, спс
не понятно для чего ты делал двойной сканпик во втором случае, и как сделать в первом поиске клик не с конца, а с начала
-
не понятно для чего ты делал двойной сканпик во втором случае, и как сделать в первом поиске клик не с конца, а с начала
А зачем ты спрашиваешь, если сам всё знаешь? Это способ повествования такой?
С начала... заменить arrpop на чтение по индексу. По массиву пробегаться циклом FOR или WHILE
getscreen
scanpicture($arr, 0,0, $_xmax, $_ymax, "chat.bmp")
$size = arrsize($arr)
FOR($i_chat = 0, $i_chat < $size, 2)
print("pictures found")
$y = INT($arr[$i_chat])
$x = INT($arr[$i_chat+1])
lclick($x, $y)
WAIT(1)
getscreen
scanpicture($var, 0,0, $_xmax, $_ymax, "send.bmp")
WHILE(arrsize($var) = 0)
WAITMS(500)
getscreen
scanpicture($var, 0,0, $_xmax, $_ymax, "send.bmp")
END_CYC
$rnd = RND(0, (arrsize($var) / 2)-1)
$x = INT($var[$rnd*2])
$y = INT($var[$rnd*2+1])
undefine($var)
lclick($x, $y)
WAIT(1)
pic("send.bmp")
END_CYC
undefine($arr)