Автокликер Clickermann :: Форум
Основной раздел => Использование => Topic started by: MacKlaud on October 03, 2018, 06:55:47 PM
-
Всем привет.
Приводить скрипт наверно смысла нет.
Есть скрипт с подпрограммой для сравнения с картинкой в 5 окнах.
Бесконечным циклом по этим 5 окнам вызывается подпрограмма.
Не могу придумать, как реализовать проверку.
Надо примерно так. При нахождении в окне картинки запоминать это на 30 сек, после чего сбрасывать и проверять нашлась ли картинка именно в этом окне в течении след 30 сек. Если нет, то halt.
И так для каждого окна.
-
При нахождении в окне картинки запоминать это на 30 сек...
Что 'это'? То, что нашли? Или в каком окне нашли?
после чего сбрасывать
Что сбрасывать? Запоминание? Тогда зачем?
Чёт полно неясностей.
Когда нашли и идут первые 30 сек мы стоим и ждём? По окнам не ходим? И потом 30 сек проверяем только в этом окне? Или мы всегда проверяем окyа по кругу без остановки и все эти действия нужно делать параллельно? Картинка может найтись сразу в нескольких окнах?
Запоминай в массив номер окна и время окончания... то ли 30, то ли 60 сек. хз для этого же окна.
Без уточнений не решить. Да и код лишним не будет.
-
Без уточнений не решить. Да и код лишним не будет.
Игра Покер. 5 окон. Очередность их всегда разная, поэтому не могу ждать в окне, когда найдется очередная картинка.
Картинки ищутся поэтому каждые 50мс в цикле по всем окнам.
Нужно раз в 30 сек проверять была ли найдена картинка в каждом из окон.
Пытался сделать отдельным потоком со временем, но никак не могу понять как и куда запихать инфу, что картинка была найдена.
Собственно совсем немного не хватает. Нужно для каждого окна записать нахождение картинки, а в отдельный поток я уже сделал и там просто проходит проверка.
$h = hgetpid($_hwnd_self)
HSET($h,0)
$pos_x1 = 0
$pos_y1 = 0
$width = 840
$height = 610
$var = 0
while($var < 5) //запись id окон
$win[$var] = HGET (377, 200)
WNDPOS ($win[$var], $pos_x1, $pos_y1)
WNDSIZE ($win[$var], $width, $height)
wndstate($win[$var], 0)
print($win[$var])
inc($var)
end_cyc
$fold_l_x1 = 252
$fold_l_y1 = 565
$fold_l_x2 = 355
$fold_l_y2 = 585
$hide_l_x1 = 515
$hide_l_y1 = 565
$hide_l_x2 = 640
$hide_l_y2 = 585
$chk1 = 0
sub(fold, $window) //подпрограмма поиска одного из изображений в окне
// HSET($window,1)
GETSCREEN
SCANPICTURE($ARR_SCAN, $fold_l_x1-10,$fold_l_y1-10, $fold_l_x2+10,$fold_l_y2+10, "fold_l.bmp", -1, 90)
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
$X = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
$Y = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
lclick($X+10, $Y+10)
$chk1 = 1
END_CYC
UNDEFINE($ARR_SCAN)
SCANPICTURE($ARR_SCAN, $fold_l_x1-10,$fold_l_y1-10, $fold_l_x2+10,$fold_l_y2+10, "fold_l2.bmp", -1, 90)
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
$X = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
$Y = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
lclick($X+10, $Y+10)
// $chk1 = 1
END_CYC
UNDEFINE($ARR_SCAN)
SCANPICTURE($ARR_SCAN, $hide_l_x1-10,$hide_l_y1-10, $hide_l_x2+10,$hide_l_y2+10, "hide_l.bmp", -1, 90)
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
$X = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
$Y = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
lclick($X+10, $Y+10)
END_CYC
UNDEFINE($ARR_SCAN)
SCANPICTURE($ARR_SCAN, $hide_l_x1-10,$hide_l_y1-10, $hide_l_x2+10,$hide_l_y2+10, "hide_l2.bmp", -1, 90)
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
$X = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
$Y = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
lclick($X+10, $Y+10)
END_CYC
UNDEFINE($ARR_SCAN)
end_sub
//setthread(t_alert, 1)
//thread(t_alert) //отдельный поток с проверкой по времени
// wait(40)
// $var1 = 0
// while($var1 < 5)
// print($chk[$var1])
// if($chk[$var1] = 0)
// execute("alert.bat")
// halt
// end_if
// inc($var1)
// end_cyc
// $chk1 = 0
// setthread(t_alert, 2)
//end_thread
1:
$var = 0
while($var < 5) //вызов каждого из 5 окон в цикле раз 50 млсек. По окончании все сначала.
$window = $win[$var]
wndstate($win[$var], 1)
HSET($win[$var],1)
fold($window)
//print($chk1)
// if($chk1 = 1)
// waitms(100)
// $chk[$var] = $chk1
// waitms(100)
// end_if
// $chk1 = 0
// //print("chk",$var," - ",$chk[$var])
inc($var)
waitms(50)
// setthread(t_alert, 1)
end_cyc
goto(1)
halt
-
Что 'это'? То, что нашли? Или в каком окне нашли?
Что нашли и в каком окне. И то и то важно.
Что сбрасывать? Запоминание? Тогда зачем?
Запись, что нашли для каждого окна. После проверки, если у всех нашли картинку, сброс данных.
Или мы всегда проверяем окна по кругу без остановки и все эти действия нужно делать параллельно? Картинка может найтись сразу в нескольких окнах?
По кругу без остановки. Картинка находится только в одном, но после нажатия на нее картинка появляется в другом. ФОЛД в покере
Запоминай в массив номер окна и время окончания... толи 30, толи 60 сек. хз для этого же окна.
Не очень понял что и как
-
Всем спасибо за помощь(сарказм).
Разобрался сам
-
Всем спасибо за помощь(сарказм).
Разобрался сам
ну хоть один честно признался, что спасибо его не искреннее, а с сарказмом.
Как видим любой, кто умеет читать справку, форум и имеет мотивацию - способен "разобраться сам". ;)
А зачем тогда нужен форум?
Опытный помог бы затратив 5 минут. Мне пришлось экспериментировать 2 дня
-
именно для этого и нужен форум. два дня посмотрел здесь темы многому научился.
А за пять минут использовал чужое готовое решение своей задачи и остался-бы дурак-дураком.
Форум - школа жизни!
Так я и говорю. Форум не нужен. На все темы можете писать - гугл в помощь, умнее станете.