Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Полуночник on October 28, 2012, 01:43:40 PM
-
Вот предлагаю такой раздельчик создать)) А то как помотрел по форумам, так вижу что свои вопросы все пихают во все более менее по смыслу и названию темы
Здесь же каждый пусть выкладывает свои проблеммы и пусть знатоки помогают их решить. Так меньше флуда будет по форумам)))
Начинающие, нубы, чайники, самовары и т.д.
Если есть вопросы ПЕРЕД ТЕМ КАК ЗДЕСЬ ПИСАТЬ посмотрите раздел http://clickermann.tk/forum/index.php?topic=33.0 (http://clickermann.tk/forum/index.php?topic=33.0)
-
Для начала предоставлю на разбор полётов свой рабочий скрипт. Моя просьба такая:
1) указать на ошибки
2) подсказать как можно улучшить , уменьшить количество строк
а так же
Давайте, дорогой друже, Prapor наметим путь достижения цели.
3. Замените каждый элемент вашей последовательности на операторы программы. Переведите ваш язык на язык кликера.
скрипт для игрушки на 226 строк
mag1: //иду в магазин
LCLICK(863,81)
WAIT(12)
sl1: //от сель и дальше продаю
getscreen
if_pixel_in(482, 262, 483, 263, 16579836) // от сель и дальше проверяю есть ли чё продать, каждую ячейку надо проверять каждый раз,
потому что если продал из неё что то, то в ней может появится что то ещё(из закрамов родины)
LCLICK(695,286)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl1) //если что то есть, то продали
else
GOTO(sl2) //если не надо продавать идём к следующей ячейке
end_if
sl2:
getscreen
if_pixel_in(482, 310, 483, 311, 16579836)
LCLICK(695,336)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl2)
else
GOTO(sl3)
end_if
sl3:
getscreen
if_pixel_in(482, 360, 483, 361, 16579836)
LCLICK(695,386)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl3)
else
GOTO(sl4)
end_if
sl4:
getscreen
if_pixel_in(482, 410, 483, 411, 16579836)
LCLICK(695,433)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl4)
else
GOTO(sl5)
end_if
sl5:
getscreen
if_pixel_in(482, 460, 483, 461, 16579836)
LCLICK(695,482)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl5)
else
GOTO(sl6)
end_if
sl6:
getscreen
if_pixel_in(482, 510, 483, 511, 16579836)
LCLICK(695,532)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl6)
else
GOTO(sl7)
end_if
sl7:
getscreen
if_pixel_in(482, 560, 483, 561, 16579836)
LCLICK(695,582)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl7)
else
goto(ht1) //последняя 7я ячейка, иду на проверку
end_if
ht1:
getscreen
if_pixel_in(482, 556, 483, 557, 0)
HALT //останавливаю скрипт, потому что все 7 ячеек забиты тем что мне нужно и надо убрать это куда-то
вручную (хотя конечно на это тоже можно сделать скрипт)))
else
LCLICK(929,81) // места не забиты, перехожу на почту игры
WAIT(12)
end_if
po:
GETSCREEN
if_pixel_in(883, 301, 892, 306, 11982062)
goto(ch) // есть письма идём забирать
else
goto(mag2) //писем нет идём на последнюю продажу в магазин
end_if
ch: //ну тут процедура сбора и удаления письма
LCLICK(968,305)
WAITMS(4000)
LCLICK(911,558)
WAITMS(110)
LCLICK(911,558)
WAITMS(RND(600,1000))
LCLICK(729,377)
WAITMS(RND(6000,8000))
LCLICK(916,308)
WAITMS(RND(600,1000))
LCLICK(1063,535)
WAITMS(RND(1000,2000))
LCLICK(738,494)
WAIT(RND(6,12))
GETSCREEN
IF_PICTURE_IN(655,487,703,525, "555.bmp") //проверяю есть ли ещё свободные места в закромах родины
goto(po) //места есть, чистим почту
else
goto(mag1) //мест нет больше, идём сдавать всё в магаз
END_IF
mag2: //последняя распродажа золотого запаса родины
LCLICK(863,81)
WAIT(12)
sl11:
getscreen
if_pixel_in(482, 262, 483, 263, 16579836)
LCLICK(695,286)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl11)
else
GOTO(sl12)
end_if
sl12:
getscreen
if_pixel_in(482, 310, 483, 311, 16579836)
LCLICK(695,336)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl12)
else
GOTO(sl13)
end_if
sl13:
getscreen
if_pixel_in(482, 360, 483, 361, 16579836)
LCLICK(695,386)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl13)
else
GOTO(sl14)
end_if
sl14:
getscreen
if_pixel_in(482, 410, 483, 411, 16579836)
LCLICK(695,433)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl14)
else
GOTO(sl15)
end_if
sl15:
getscreen
if_pixel_in(482, 460, 483, 461, 16579836)
LCLICK(695,482)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl15)
else
GOTO(sl16)
end_if
sl16:
getscreen
if_pixel_in(482, 510, 483, 511, 16579836)
LCLICK(695,532)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl16)
else
GOTO(sl17)
end_if
sl17:
getscreen
if_pixel_in(482, 560, 483, 561, 16579836)
LCLICK(695,582)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl17)
else
goto(ht)
end_if
ht: //ну а тут проверяю есть ли что продавать.
если нечего, то иду на большую дорогу за новыми приключениями
GETSCREEN
IF_PICTURE_IN(419,546,468,598, "333.bmp")
LCLICK(94,51)
WAITMS(500)
LCLICK(57,287)
WAITMS(500)
LCLICK(123,685)
KEYPRESS(#0)
WAITMS(120)
KEYPRESS(#0)
LCLICK(84,709)
WAIT(6000)
LCLICK(97,612)
WAITMS(500)
LCLICK(172,108)
goto(mag1) //где то что то надыбал и иду в магаз
else
goto(ht1) //а это если есть что продать, но не могу, потому что щёки чем то набиты как у хомяка, надо узнать чем
end_if
Вооот... жду ответов)) ток сразу не надо скрипт свой сувать с кучей функций - один фиг не пойму))) Надо по порядку... пережевать... в рот положить ;D
-
1. Зачем делаешь такие пробелы в коментах? Это неудобно. Но главное длинные коменты у тебя не полностью закоментированны!
Если пишешь длинный комент пиши его в несколько строк. Там в редакторе есть полоса, вот по ней и отделяй строки. Закоментить несколько строк можно мусоркой.
2. Ты пишешь везде
else
GOTO(sl4)
end_if
sl4:
это лишнее, скрипт и так пойдет в низ если условие не сработало
3. Пользуйся авто форматом чтобы расставить отступы. Так понятнее где что и сразу увидишь если где то забыл поставить завершающую end_if
mag1: //иду в магазин
LCLICK(863,81)
WAIT(12)
// от сель и дальше проверяю есть ли чё продать, каждую ячейку надо проверять
//каждый раз,потому что если продал из неё что то, то в ней может появится что то
//ещё(из закрамов родины)
sl1: //от сель и дальше продаю
getscreen
if_pixel_in(482, 262, 483, 263, 16579836)
LCLICK(695,286)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl1) //если что то есть, то продали
end_if
sl2:
getscreen
if_pixel_in(482, 310, 483, 311, 16579836)
LCLICK(695,336)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl2)
end_if
sl3:
getscreen
if_pixel_in(482, 360, 483, 361, 16579836)
LCLICK(695,386)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl3)
end_if
sl4:
getscreen
if_pixel_in(482, 410, 483, 411, 16579836)
LCLICK(695,433)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl4)
end_if
sl5:
getscreen
if_pixel_in(482, 460, 483, 461, 16579836)
LCLICK(695,482)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl5)
end_if
sl6:
getscreen
if_pixel_in(482, 510, 483, 511, 16579836)
LCLICK(695,532)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl6)
end_if
sl7:
getscreen
if_pixel_in(482, 560, 483, 561, 16579836)
LCLICK(695,582)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl7)
end_if
ht1:
getscreen
if_pixel_in(482, 556, 483, 557, 0)
// останавливаю скрипт, потому что все 7 ячеек забиты тем что мне нужно и надо
// убрать это куда-то вручную (хотя конечно на это тоже можно сделать скрипт)
HALT
else
LCLICK(929,81) // места не забиты, перехожу на почту игры
WAIT(12)
end_if
po:
GETSCREEN
if_pixel_in(883, 301, 892, 306, 11982062)
goto(ch) // есть письма идём забирать
else
goto(mag2) // писем нет идём на последнюю продажу в магазин
end_if
ch: //ну тут процедура сбора и удаления письма
LCLICK(968,305)
WAITMS(4000)
LCLICK(911,558)
WAITMS(110)
LCLICK(911,558)
WAITMS(RND(600,1000))
LCLICK(729,377)
WAITMS(RND(6000,8000))
LCLICK(916,308)
WAITMS(RND(600,1000))
LCLICK(1063,535)
WAITMS(RND(1000,2000))
LCLICK(738,494)
WAIT(RND(6,12))
GETSCREEN
IF_PICTURE_IN(655,487,703,525, "555.bmp") //проверяю есть ли ещё свободные места в закромах родины
goto(po) //места есть, чистим почту
else
goto(mag1) //мест нет больше, идём сдавать всё в магаз
END_IF
mag2: //последняя распродажа золотого запаса родины
LCLICK(863,81)
WAIT(12)
sl11:
getscreen
if_pixel_in(482, 262, 483, 263, 16579836)
LCLICK(695,286)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl11)
end_if
sl12:
getscreen
if_pixel_in(482, 310, 483, 311, 16579836)
LCLICK(695,336)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl12)
end_if
sl13:
getscreen
if_pixel_in(482, 360, 483, 361, 16579836)
LCLICK(695,386)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl13)
end_if
sl14:
getscreen
if_pixel_in(482, 410, 483, 411, 16579836)
LCLICK(695,433)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl14)
end_if
sl15:
getscreen
if_pixel_in(482, 460, 483, 461, 16579836)
LCLICK(695,482)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl15)
end_if
sl16:
getscreen
if_pixel_in(482, 510, 483, 511, 16579836)
LCLICK(695,532)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl16)
end_if
sl17:
getscreen
if_pixel_in(482, 560, 483, 561, 16579836)
LCLICK(695,582)
WAITMS(RND(300,500))
LCLICK(728,375)
WAIT(RND(5,8))
GOTO(sl17)
end_if
//ну а тут проверяю есть ли что продавать. если нечего, то иду на большую дорогу
//за новыми приключениями
ht:
GETSCREEN
IF_PICTURE_IN(419,546,468,598, "333.bmp")
LCLICK(94,51)
WAITMS(500)
LCLICK(57,287)
WAITMS(500)
LCLICK(123,685)
KEYPRESS(#0)
WAITMS(120)
KEYPRESS(#0)
LCLICK(84,709)
WAIT(6000)
LCLICK(97,612)
WAITMS(500)
LCLICK(172,108)
goto(mag1) //где то что то надыбал и иду в магаз
else
//а это если есть что продать, но не могу, потому что щёки чем то набиты как
//у хомяка, надо узнать чем
goto(ht1)
end_if
-
в скрипте у меня комментарий нет вообще. их я тут написал, что бы понятней было всем(ну как минимум начинающим) что и зачем делаю. За лишнее спс, у себя уже поправил)) А вот как автоформат сделать не знаю, не всё сразу понятно же)))
Да и вопросик ещё появился один. Помню что видел где-то его и видел ответ, но не найти. Собственно суть в чём:
допустим скрипт работает норм, но иногда страница не успевает догрузится, а кликер уже прёт дальше. Понятно после этого происходит совсем не то что надо.
В конфиге проги видел настроки скорости воспроизведения. Не то. А вот как прикрутить что бы кликер дожидался загрузки. Не, команду для проверки можно влепить конечно. Но проблемма в том, что например прыгая по разным страницам(скажем пару десятков миллионов страниц в день) после каждого действия проверять на догрузку? это же насколько увеличится скрипт и время его оработки? Поправте меня если это делается парой строкой в скрипте и не много времени занимает на самом деле)))
-
Ну сделай ожидание в несколько секунд, например WAITMS(4000)
Или в строку состояния браузера скриптом поглядывай.
-
да ожидание то я поставил. примерно знаю сколько времени на что уходит. но у меня например с 18.00 до 23.00 инет еле ползает и страницы долго обновляются, в остальное время без проблемм. а я скрипт включил и на работу уехал. следить не могу.
-
Делаешь SUB с ожиданием и проверкой а GOSUB вставляешь везде в скрипт где нужна перезагрузка. И тогда задержка будет именно столько сколько нужно.
GOSUB (wait_load)
SUB(wait_load)
// здесь ожидание загрузки страницы
END_SUB
-
хм... это вместо простого WAIT? так может помоч. а вот под этим что следует понимать? - // здесь ожидание загрузки страницы)
жаль только перезагрузка идёт в данном примере сверху почти после каждого клика)))
-
// здесь ожидание загрузки страницы - ну здесь будет код который напишешь ты и он будет все время вызываться GOSUB (wait_load)
SUB(wait_load) прописываешь в конце скрипта 1 раз
-
Ох :) , Prapor, любитель готовых решений ;D
-
Дело не в том что я любитель готовых примеров. Как вам уже писали в другой теме, для корифеев, знатоков этого дела всё вроде просто и чё тут размусоливать. А вот я ничего не знаю. И не только я. И тему, если почитаете начало топика, начал с того, что пожалуйста: подскажите, обьясните, распишите. На конкретном примере.
Это будет не только полезно мне, но и вам всем. Потому что кто то зайдёт на этот форум такой же как я. Посмотрит на мои например ошибки и подробные обьяснения и поймёт что к чему. Лишних вопросов ни у кого не будет.
справка программы:
GOSUB (sub_name) - вызывает подпрограмму (см. SUB)
Параметры
sub_name - имя ранее описанной подпрограммы
После выполнения интерпретация начинается со следующей после GOSUB строчки сценария
Ну и скажите что тут понятного???? мне ничего...
-
В теме про суперклик приводились примеры с сабами.
http://clickermann.tk/forum/index.php?topic=8.msg297#msg297 (http://clickermann.tk/forum/index.php?topic=8.msg297#msg297)
Подпрограмма - это повторяющийся набор команд, который для удобства работы оформлен в отдельно. И может быть вызван в любой части сценария одной строкой.
В твоём случае, prapor, проверка на загрузку страницы может занимать, к примеру 200 строк кода. А проверять, как ты писал, надо постоянно, ну или часто. Для этого есть возможность наити способ однократной проверки: загрузилась страница или ещё ждать. Потом этот способ оформить в саб, и вставлять вызов саба в любое удобное время и место.
А вот уж как тебе твоя фантазия подскажет способ определения загрузки страницы ... это ты с ней сам кумекай :D . Как писал выше Сергей это можно зделать визуальной проверкой.
Что нибудь яснее стало?
-
Ну и скажите что тут понятного???? мне ничего...
Проблема даже не в том , что Вам лично непонятна справка.
Такие сложно-куцые описания, это по сути посыл в никуда, типа справка ниочем.
Ибо вот ---> Продвинутый юзер в таком описании вовсе не нуждается, а новичок быстро уходит в скуку ступора.
Этот факт отталкивают массу нормальных юзеров от хорошей в целом программы.
Не хотелось чтоб у автора был потерян интерес к развитию.
-
Пока точно стало ясно что писать скрипт на 200 строк к скрипту из 200 строк нет смысла. Тот топик я просматривал, но ввиду своего неумения(незнания) мало чего от туда извлёк. Надеюсь что в типовых алгоритмах что то подчерпну. И в этом топике мне (и не только) помогут восполнить пробелы в знаниях. Пока что здесь, как и на мноооогих других форумах тупо отсылают к справочникам. Всё надо клещами вытягивать, чуть ли не через одно место.
Эхх мало, мало людей готовых потратить своё время просто на то что бы помочь кому то.
-
Моя просьба такая:
1) указать на ошибки
2) подсказать как можно улучшить , уменьшить количество строк
а так же
Давайте, дорогой друже, Prapor наметим путь достижения цели.
3. Замените каждый элемент вашей последовательности на операторы программы. Переведите ваш язык на язык кликера.
ток сразу не надо скрипт свой сувать с кучей функций - один фиг не пойму))) Надо по порядку... пережевать... в рот положить ;D
-
Заметьте! Три пункта:
1. Словами опишите, что конкретно хотите зделать с помощью скрипта.
2. Выпишите чёткую последовательность простых действий мышью и клавой, которая приведёт к нужному результату.
3. Замените каждый элемент вашей последовательности на операторы программы. Переведите ваш язык на язык кликера.
Когда бы вы описали их по порядку было бы проще вас понять и помочь. А переход сразу к третьему пункту заставляет применять навыки мета-дизассемблирования, что требует больших затрат, ибо читать мысли люди разучились. :D
-
ясно. из пустого в порожнее. можно удалять тему
-
Ну вот например ожидание для хрома:
SUB(WAIT_UNTIL_LOAD)
$break = 0
WHILE($break = 0)
WAITMS(100)
GETSCREEN
COLORMODE(7)
IF(PXL(69, 41) = 8355711)//Кнопка перезагрузки в хроме.
$break = 1
END_IF
END_CYC
END_SUB
LCLICK(0,900)//Браузер в фокус
KEYPRESS(#F5)//Перезагружаем страницу
GOSUB(WAIT_UNTIL_LOAD)//Вызываем подпрограмму ожидания загрузки
print("loaded")//Сработает когда страница будет загружена
halt // for single run
-
Спасибо Сергей. Теперь намного яснее стала задача) Будем пытаться применить на практике. Кстати, не могли бы поподробней обьяснить про переменные? Вы уже давали пример, но я в нём ничего не понял. В моём скрипте(или макросе, как правильнее?) я каждый раз ввожу цвет который нужен. Пытался обьявить переменную, но тогда цвет не находит(((
-
LCLICK(0,900)//Браузер в фокус
Сергей!)
Поясните, что имеется ввиду под комментарием " //Браузер в фокус"?
-
как автоформат сделать не знаю
Редактирую в 4.5 версии, там нет автоформата) запустил 4.7 -увидел.
-
ЦИТРИН, переключение на окно браузера.
Кстати, хром разумеется на полный экран.
prapor, возможно в синтаксисе ошибка.
-
После обьяснений как и чего работает в кликере переделал свой скрипт:
//Гнев Богов
// Чистка почты и продажа лута в магазине
$x = 728
$y = 375
$x2 = 695
$y2 = 284
$c1 = 4079426
$c2 = 592154
$c3 = 1399552
$x3 = 490
$x4 = 580
$y3 = 262
$y4 = 268
mag1:
LCLICK(863,81)
GOSUB(WAIT_MA)
sl1:
getscreen
if_pixel_in($x3, $y3, $x4, $y4, $c1, $c2, $c3)
LCLICK($x2,$y2)
WAITMS(RND(300,500))
LCLICK($x,$y)
GOSUB(WAIT_MA)
GOTO(sl1)
end_if
sl2:
getscreen
if_pixel_in($x3, $y3+50, $x4, $y4+50, $c1, $c2, $c3)
LCLICK($x2,$y2+50)
WAITMS(RND(300,500))
LCLICK($x,$y)
GOSUB(WAIT_MA)
GOTO(sl2)
end_if
sl3:
getscreen
if_pixel_in($x3, $y3+100, $x4, $y4+100, $c1, $c2, $c3)
LCLICK($x2,$y2+100)
WAITMS(RND(300,500))
LCLICK($x,$y)
GOSUB(WAIT_MA)
GOTO(sl3)
end_if
sl4:
getscreen
if_pixel_in($x3, $y3+150, $x4, $y4+150, $c1, $c2, $c3)
LCLICK($x2,$y2+150)
WAITMS(RND(300,500))
LCLICK($x,$y)
GOSUB(WAIT_MA)
GOTO(sl4)
end_if
sl5:
getscreen
if_pixel_in($x3, $y3+200, $x4, $y4+200, $c1, $c2, $c3)
LCLICK($x2,$y2+200)
WAITMS(RND(300,500))
LCLICK($x,$y)
GOSUB(WAIT_MA)
GOTO(sl5)
end_if
sl6:
getscreen
if_pixel_in($x3, $y3+250, $x4, $y4+250, $c1, $c2, $c3)
LCLICK($x2,$y2+250)
WAITMS(RND(300,500))
LCLICK($x,$y)
GOSUB(WAIT_MA)
GOTO(sl6)
end_if
sl7:
getscreen
if_pixel_in($x3, $y3+300, $x4, $y4+300, $c1, $c2, $c3)
LCLICK($x2,$y2+300)
WAITMS(RND(300,500))
LCLICK($x,$y)
GOSUB(WAIT_MA)
GOTO(sl7)
end_if
TRAYSAY ("на почту") // сделал просто что бы видеть что что то происходит. работаю в оконном режиме. сам в это время занимаюсь другими делами.
ht1:
getscreen
if_pixel_in($x3, $y3+300, $x4, $y4+300, 11438, 9437313, 9456128)
TRAYSAY("всё забито")
SOUND("pause.wav")
HALT
end_if
LCLICK(929,81)
WAIT(RND(12,14))
po:
GETSCREEN
if_pixel_in(883, 301, 892, 306, 11982062)
goto(ch)
else
TRAYSAY("писем нет")
goto(F)
end_if
ch:
LCLICK(968,305)
WAITMS(4500)
LCLICK(911,558)
WAITMS(110)
LCLICK(911,558)
WAITMS(RND(600,1000))
LCLICK(729,377)
GOSUB (WAIT_PO)
LCLICK(916,308)
WAITMS(RND(600,1000))
LCLICK(1063,535)
WAITMS(RND(1000,2000))
LCLICK(738,494)
GOSUB (WAIT_PO)
GETSCREEN
//Проверка в трёх местах ячеек рюкзака в почте.
IF_PICTURE_IN(445,320,710,532, "1.bmp")
goto(po)
end_if
GETSCREEN
IF_PICTURE_IN(445,320,710,532, "2.bmp")
goto(po)
end_if
GETSCREEN
IF_PICTURE_IN(445,320,710,532, "3.bmp")
goto(po)
else
TRAYSAY("мест нет, продаю")
goto(mag1)
END_IF
F:
LCLICK(863,81)
GOSUB(WAIT_MA)
GETSCREEN
IF_PICTURE_IN(419,546,468,598, "4.bmp")
goto(mag1)
end_if
HALT
//задержки на обновление страницы
SUB(WAIT_MA)
$break = 0
WHILE($break = 0)
WAIT(4)
GETSCREEN
IF(PXL(722, 287) = 1919430)
$break = 1
END_IF
END_CYC
END_SUB
SUB(WAIT_PO)
$break = 0
WHILE($break = 0)
WAIT(4)
GETSCREEN
IF(PXL(841, 375) = 4078899)
$break = 1
END_IF
END_CYC
END_SUB
Что можете посоветовать изменить? И если есть что переделать, то как?
В частности у меня вопрос по проверке в трёх местах ячеек рюкзака в почте. Пока реализовал так но!
Там всего 20 ячеек. Сделал один снимок и по нему сделал сравнение. Оказалось что во всех ячейках рисунок разный, хоть и не заметно глазу. Пытался сделать с колормод, но всё равно сравнение подходит только к той ячейке кот скриншотил. Может я чего не то делал.... Вот как реализовать поиск пустых ячеек, без сравнения с картинкой? Сделал скрины на всякий... ячейки могут разные заняты быть.
-
Ну тут только если css'ом попробовать какие-то метки ставить.
-
Сделал таки сравнение картинки с колормодом и теперь сравнение только один раз происходит
-
Мне пока не ясно для чего ты сравниваешь рисунок, Прапор.
Если бы мне надо было проверять все эти двадцать ячеек по очереди, я бы сделал цикл с изменением координат проверки после каждого прохода. Ты хочешь, чтобы тебе сценарий кликерный написали, да ещё 100% работающий. Вот только я в эту игру не играю. А без реальных условий работать со скриншотами это малоэффективно.
-
Та ниии..))) я не прошу мне написать сценарий)) я прошу ОБЬЯСНИТЬ какие ошибки совершаю и КАК лучше их исправить)))
-
Если при наведении на ячейку меняется курсор мыши (например со стрелочки на кисть руки или крестик), можно по нему сделать определение:
move($x,$y)
if(pxlxor($x,$y,$x+5,$y+5) = $hash-cross)
lclick($x,$y) //продаём
end_if
-
Что то мозги не соображают... Что я не правильно сделал? Почему цикл завершается и переходит к клику если находит и цвета и картинку?
$break = 0
WHILE($break = 0)
getscreen
if_pixel_in(800,230,1300,600, 7919672, 16777215, 16750899)
$x2 = $_return1
$y2 = $_return2
else
$break = 1
end_if
getscreen
COLORMODE(6)
IF_PICTURE_IN($x2-440,$y2+18,$x2-175,$y2+230, "1.bmp")
else
$break = 1
END_IF
END_CYC
LCLICK(863,81)
-
Значит не находит. Чтобы точно убедиться как работает условие вставь внутрь него запись в лог.
-
находит всё. при поиске ошибок всегда в условия вставляю запись в лог найденых координат. Но по каким то причинам не происходит цикл, и переходит к клику.
-
Новая проблемма(( вот часть скрипта, который работает на чистку почты в игре, но мне надо кое что добавить:
GETSCREEN
if_pixel_in(800, 230, 1100, 320, 11982062) //поиск есть ли письма на почте, если есть задаю координаты
$x2 = $_return1
$y2 = $_return2
else
goto(F) // ухожу из почты если писем нет
end_if
GOSUB (PR)
LCLICK(79,17)
WAITMS(500)
LCLICK(69,118)
WAITMS(500)
KEYSTRING("Сервер")
WAITMS(100)
LCLICK(475,846)
WAITMS(500) //до этого момента запускаю поиск текста в мазиле (ctrl+f работать не хочет, поэтому кликаю)
getscreen
if_pixel_in(800,230,1300,600, 7919672, 16777215, 16750899)
$e = $_return1
$e1 = $_return2 //ну тут задаю нужные координаты и т. д.
else
goto(F)
end_if
LCLICK($e,$e1+2)
$break = 0
WHILE($break = 0)
WAIT(1)
_PIXEL_IN(920,580, 980, 590, 65570)
$break = 1
END_IF
END_CYC
LCLICK($x2+20,$y2+256)
WAITMS(115)
LCLICK($x2+20,$y2+256)
GOSUB (WAIT_KN)
WAITMS(10)
KEYPRESS(#ENTER)
GOSUB (WAIT_FON)
LCLICK($e+10,$e1+2)
WAITMS(RND(600,1000))
LCLICK($x2+170,$y2+237)
WAITMS(300)
KEYPRESS(#ENTER)
GOSUB (WAIT_FON)
И нужно бы мне внести проверку на результаты поиска пикселя.
GETSCREEN
IF($y2= 300)
GOTO(L)
Если он найден в одном месте - хорошо, если в другом($y2= 300), то пропускаем несколько строк и переходим ближе к концу скрипта.
GETSCREEN
if_pixel_in(800, 230, 1100, 320, 11982062) //поиск есть ли письма на почте, если есть задаю координаты
$x2 = $_return1
$y2 = $_return2
else
goto(F) // ухожу из почты если писем нет
end_if
GETSCREEN
IF($y2= 300) //вот я вставил проверку
GOTO(L) //если совпадает, то пропускаем часть команд
END_IF
GOSUB (PR)
LCLICK(79,17)
WAITMS(500)
LCLICK(69,118)
WAITMS(500)
KEYSTRING("Сервер")
WAITMS(100)
LCLICK(475,846)
WAITMS(500)
getscreen
if_pixel_in(800,230,1300,600, 7919672, 16777215, 16750899)
$e = $_return1
$e1 = $_return2
else
goto(F)
end_if
LCLICK($e,$e1+2)
$break = 0
WHILE($break = 0)
WAIT(1)
_PIXEL_IN(920,580, 980, 590, 65570)
$break = 1
END_IF
END_CYC
LCLICK($x2+20,$y2+256)
WAITMS(115)
LCLICK($x2+20,$y2+256)
GOSUB (WAIT_KN)
WAITMS(10)
KEYPRESS(#ENTER)
GOSUB (WAIT_FON)
L: //переходим сюда если найденные координаты $y2=300
LCLICK($e+10,$e1+2)
WAITMS(RND(600,1000))
LCLICK($x2+170,$y2+237)
WAITMS(300)
KEYPRESS(#ENTER)
GOSUB (WAIT_FON)
После того как я добавил эту проверку начинается какафония.... работа скрипта ускоряется раз в 10 и зацикливается на нескольких кликах вызова поиска текста в бразе ("Сервер") находит письмо, но потом не кликает по нужным координатам и тупо снова начинает искать текст.LCLICK(79,17) то.е. зацикливается на этих кликах, отсель
WAITMS(500)
LCLICK(69,118)
WAITMS(500)
KEYSTRING("Сервер")
WAITMS(100)
LCLICK(475,846)
WAITMS(500)
getscreen
if_pixel_in(800,230,1300,600, 7919672, 16777215, 16750899)
$e = $_return1
$e1 = $_return2
else
goto(F)
end_if
LCLICK($e,$e1+2)
$break = 0
WHILE($break = 0)
WAIT(1)
_PIXEL_IN(920,580, 980, 590, 65570)
$break = 1
END_IF
END_CYC
LCLICK($x2+20,$y2+256) и вот до сель
Почему? Я что то не правильно делаю?
-
Проверь скрипт на ошибки (_PIXEL_IN) и на забытые end_if
-
Вопрос...
Сравнение if($y2= 300) разве должно менять переменную? в скрипте что привел выше именно так и происходит. Поэтому и происходят глюки в работе.
-
нет условие переменные не меняет, ошибка в другом
$y2 = 100
if($y2 = 300)
//
end_if
print($y2)
halt
-
Тогда не пойму ничего.... проверял скрипт десять раз, ошибок не вижу. но как только ставлю это сравнение - идут косяки в работе скрипта(((
-
if (($y2>299)&($y2<301))
// тело
end_if
так пробовал? работает?
или так:
$y_if=$y2
if ($y_if=300)
// тело
end_if
если баг, его надо выявить, в каких случаях он срабатывает.
вот ещё сомнения:
if (...)
if (...)
goto(s1)
end_if
else
if (...)
goto(s2)
else
goto(s3)
end_if
end_if
кликерман, как я понял, сначало компилирует, ставит метки по эльзе, эндифу,
потом начинает интерпретировать построчно... и где нить запутается в переходах по гоуту в ифах...
(это по ощущениям, когда не можешь понять что происходит)
поэтому стараюсь всё в флаги перевести, а проверка на флаг, стоит ли исполнять тот или иной блок в последовательном
течении алгоритма- это дополнительно вложенный иф.. как бы не запутаться самому или кликеру...
-
Всем привет. не могу разобраться... имеем скрипт
getscreen
if_picture_in(0,0, $_xmax, $_ymax, "123.bmp", -1,90)
move($_return1, $_return2)
wait(1)
end_if
halt
В полноэкранном режиме работает как надо, в оконном тоже, но если привязаться к окну через альт+w - не отрабатывает. Что с этим делать?
Зы тестирую на сайте в хроме.
-
Решил не создавать отдельную тему: проблема тоже с GETSCREEN, и с видимостью картинки для кликера в оконном/полноэкранном режимах.
Сейчас тестирую Кликерман в игре Batlestar Galactica (браузер Опера). И выяснилось, что кликер видит и захватывает картинку ТОЛЬКО в оконном режиме БЕЗ привязки к окну. Во всех остальных вариантах (оконный с привязкой, полноэкранный с/без привязки) - только черный экран (хотя идентификатор окна и размер остаётся тот же, что и в оконном режиме "развёрнутом").
В связи с этим возникло два вопроса:
1) может ли такое быть, что перед основной картинкой в игре, есть ещё второе окно/слой - черное с частичной прозрачностью, типа фильтра? Это предположение тем более вероятно, что вся графика в игре (в космосе) очень тёмная, кто играл наверняка обращал на это внимание. (Причём, если резко вылететь из тени планеты на свет, то мгновенно меняется общая яркость всей картинки, видимо без пересчёта графики, так как освещённость всех обектом меняется за долю секунды, и графика никогда не тормозит в этот момент).
2) и как в данном случае посмотреть все элементы окна, или дополнительные окна/слои, если они там есть.
Где-то на форуме я вроде читал про такую программу для анализа окон, но сейчас не нахожу... (Если это действительно отдельное чёрное окно, то было бы неплохо увеличить его прозрачность, а то в игре местами слишком темно).
(Захват картинки тестировал вот таким скриптом, заодно смотрел как работает COLORMODE)
//размер экрана 1680х1050
getscreen
WAITMS(100)
screenshot("aster_z") //8 бит
WAITMS(50)
getscreen
WAITMS(100)
COLORMODE(4, 80, 100, 1600, 950) //4 бита
screenshot("aster_4")
WAITMS(50)
getscreen
WAITMS(100)
COLORMODE(6, 80, 100, 1600, 950) //2 бита
screenshot("aster_6")
WAITMS(100)
halt // for single run
-
Всем здравствуйте! Не работает запись. Выдает такую ошибку -
Ошибка записи: не удалось установить перехватчик. Если у вас Vista или Win7, попробуйте отключить UAC.
Какой есть выход?