Автокликер Clickermann :: Форум
Основной раздел => Ошибки => Topic started by: Shen_De_Lar on May 11, 2014, 04:43:20 PM
-
смысле примерно следующий:
sub(...)
while(...)
...
if_picture_in(...)
goto(skip)
end_if
end_cyc
skip:
end_sub
Когда доходило до end_sub, то прыгало назад в цикл. Удивился, когда получил цикл, хотя картинку исправно находило=)
-
Весь скрипт предъяви. возможна ошибка. if_picture_in тут вообще не причем.
-
#name "Browser"
sub(Config, $conf_hwnd, $conf_x, $conf_y, $conf_wide, $conf_height)
wndpos($conf_hwnd, $conf_x, $conf_y)
wndsize($conf_hwnd, $conf_wide, $conf_height)
end_sub
sub(WaitOpen)
while(wndfind("Increase") = 0)
waitms(200)
end_cyc
$page_increase=wndfind("Increase")
Config($page_increase, 0, 0, 1000+$yourshiftx, 650+$yourshifty)
logwrite("открылось")
$wait_download = 60000
$time = $_ms + $wait_download
while($time > $_ms)
hset($page_increase, 1)
getscreen
colormode(7,500, 500, 1500,1000)
if_picture_in(700,700, 1500,1500, "Крестик.bmp", 255, 80)
logwrite("lol")
$download_success=1
goto(skip)
end_if
hset($page_increase, 0)
wait(1)
end_cyc
$download_success=0
skip:
logwrite("успех", $download_success)
end_sub
sub(WaitClose)
while(wndfind("Increase") ! 0)
waitms(200)
end_cyc
logwrite("закрылось")
end_sub
sub(Open, $Open_browser, $Open_site)
execute($Open_browser, $Open_site)
WaitOpen()
end_sub
sub(Close, $Close_browser)
execute("TASKKILL",strconcat("/IM ", $browser))
WaitClose()
end_sub
$browser="Chrome.exe"
$site="http://vk.com/increase.online?mid=21650629"
$yourshiftx=300
$yourshifty=300
Open($browser, $site)
halt // for single run
Игра крашится часто, пишу нечто универсальное, дабы можно было переоткрыть, и чтоб работать на компе не мешало. Чтобы не было привязки к координатам, браузерам, да и ссылка ауткеем может быть.
А причина похоже в том, что из if сваливать не хорошо, рано или поздно вернется на end_if
-
А причина похоже в том, что из if сваливать не хорошо, рано или поздно вернется на end_if
Ды нет, сваливать нехорошо из цикла while. В предыдущих версиях об этом в справке упоминалось.
Напиши так:
#name "Browser"
sub(Config, $conf_hwnd, $conf_x, $conf_y, $conf_wide, $conf_height)
wndpos($conf_hwnd, $conf_x, $conf_y)
wndsize($conf_hwnd, $conf_wide, $conf_height)
end_sub
sub(WaitOpen)
while(wndfind("Increase") = 0)
waitms(200)
end_cyc
$page_increase=wndfind("Increase")
Config($page_increase, 0, 0, 1000+$yourshiftx, 650+$yourshifty)
logwrite("открылось")
$wait_download = 60000
$time = $_ms + $wait_download
while($time > $_ms)
hset($page_increase, 1)
getscreen
colormode(7,500, 500, 1500,1000)
if_picture_in(700,700, 1500,1500, "Крестик.bmp", 255, 80)
logwrite("lol")
$download_success=1
ELSE
$download_success=0
hset($page_increase, 0)
wait(1)
end_if
end_cyc
SWITCH($download_success) // результат
CASE(0)
logwrite("Провал")
CASE(1)
logwrite("успех")
DEFAULT
// случай по умолчанию
END_SWITCH
end_sub
sub(WaitClose)
while(wndfind("Increase") ! 0)
waitms(200)
end_cyc
logwrite("закрылось")
end_sub
sub(Open, $Open_browser, $Open_site)
execute($Open_browser, $Open_site)
WaitOpen()
end_sub
sub(Close, $Close_browser)
execute("TASKKILL",strconcat("/IM ", $browser))
WaitClose()
end_sub
$browser="Chrome.exe"
$site="http://vk.com/increase.online?mid=21650629"
$yourshiftx=300
$yourshifty=300
Open($browser, $site)
halt // Стопе
PS: подпрограммы нужны чтобы сокращать повторяющиеся части а у тебя наоборот скрипт из за этого удлиняется и запутывается.
Ну вот зачем писать подпрограмму Config(.....) когда можно тупо написать тут же wndpos и wndsize?!
-
В последней версии этого в справке нету. Забавная мелочь, не критичная.
Спасибо, за советы.
Хочу за одно спросить, а можно ли с браузером работать через команды? Интересует работа с вкладками - там закрыть, обновить, сменить, без анализа графики.
p.s. а еще лучше по моему так:
$download_success = 0
$time = $_ms + $wait_download
while($time > $_ms)
hset($page_increase, 1)
getscreen
colormode(7,500, 500, 1500,1000)
if_picture_in(700,700, 1500,1500, "Êðåñòèê.bmp", 255, 80)
$time = $_ms
$download_success=1
end_if
hset($page_increase, 0)
wait(3)
end_cyc
...
-
Ну да конечно там еще $time = 0 нужно приписать чтоб из цикла выйти
-
Обана на что я наткнулся - это же работа с браузером - закрыть, обновить вкладку - ну и с кнопками громкости, медиа плеером и т.д. http://msdn.microsoft.com/en-us/library/windows/desktop/ms646275(v=vs.85).aspx
-
примерно начиная с версии 4.9 я бы вообще не рекомендовал использовать goto :)
-
Добавь что-то вроде return для подпрограмм. Дабы через это дело можно было выскочить из нее, и не проверять потом полкилометра ненужных условий. Да и возврат значений лишним не будет - чего плодить зря переменные.
-
Ды нет, сваливать нехорошо из цикла while. В предыдущих версиях об этом в справке упоминалось.
Успешно сваливаю из while предвратительно указав значение при котором while не "крутит":
$b=1
$a=1
WHILE($a=1)
IF($b=1)
$a=0
GOTO(123)
END_IF
END_CYC
...
123:
З.Ы.
Офтоп
Если выполнять
FOR($a=0, $a < 12)
#include "123.cms"
END_CYC
где 123.cms
SUB(MYSUB)
$a=13
END_SUB
MYSUB()
Код FOR после первого пробега останавливается, потому что $a=13. Если задать число меньше 12 - зацыклит. Хотя в справке написано: После выполнения подпрограммы, сценарий продолжится с момента вызова подпрограммы. Локальные переменные подпрограммы (параметры) при этом будут уничтожены.
А с другой стороны значение $a затягивает в SUB.
-
Успешно сваливаю из while предвратительно указав значение при котором while не "крутит":
$b=1
$a=1
WHILE($a=1)
IF($b=1)
$a=0
GOTO(123)
END_IF
END_CYC
...
123:
З.Ы.
Офтоп
Если выполнять
FOR($a=0, $a < 12)
#include "123.cms"
END_CYC
где 123.cms
SUB(MYSUB)
$a=13
END_SUB
MYSUB()
Код FOR после первого пробега останавливается, потому что $a=13. Если задать число меньше 12 - зацыклит. Хотя в справке написано: После выполнения подпрограммы, сценарий продолжится с момента вызова подпрограммы. Локальные переменные подпрограммы (параметры) при этом будут уничтожены.
А с другой стороны значение $a затягивает в SUB.
Не все локальные переменные, а только параметры. Которых у тебя нет.
Еще написано, что подпрограмма должна быть на верхнем уровне.
Её нельзя ложить в условия, циклы и другие подпрограммы. Это относится только к телу саба.
У тебя саб внутри фора посредством инклюда. Саб и не работает.
Саб пихаешь в инклюд, ставишь его в начале. А вызов в цикле.
-
Нуууу, вообщем, если не дублировать переменных, то в изложеном виде работает как надо.
-
Ты не понял. Полностью локальная область видимости переменных для подпрограммы не реализована.
Они так же глобальны.
Написано о уничтожении локальных переменных принимающих параметры.
Я не проверял, может и их нельзя дублировать. Скорее всего они просто очистятся чтобы не занимать память.