Автокликер Clickermann :: Форум
Основной раздел => Использование => Topic started by: keepsv on June 18, 2015, 10:31:53 AM
-
Доброго времени суток. Прошу помощи у профи. Есть потребность в сценарии который подбирал бы базу соперника по параметрам а точнее по количеству золота. Вот ссылка на небольшое видео процесса. https://drive.google.com/file/d/0B3X-rzXVPqneZVJfcGUxcjNPMms/view?usp=sharing (https://drive.google.com/file/d/0B3X-rzXVPqneZVJfcGUxcjNPMms/view?usp=sharing) Задача такая: листать базы пока не найдем соперника с количеством золота от 500 000. Как нашли развернуть окно, отсигналить и остановить процесс поиска. У меня ни знаний ни мозгов не хватает для написания такого сценария. ) Поэтому прошу наставить на путь истинный. Вот что написал я:
//ищем и жмем кнопку "Атака"
WAIT(1)
GETSCREEN (0,0, 800,800)
COLORMODE(7)
IF_PICTURE_IN (0,0, 760,670, "a.bmp", -1, 80)
LCLICK($_return1, $_return2)
WAIT(1)
GETSCREEN (0,0, 800,800)//ищем и жмем кнопку "Найти"
COLORMODE(7)
IF_PICTURE_IN (0,0, 760,670, "b.bmp", -1, 80)
LCLICK($_return1, $_return2)
poisk: //метка нужна для возврвта если "6.bmp" не найдена (под вопросом)
$time = $_time_t + 5
WHILE($time > $_time_t)
GETSCREEN (635,41, 650,58) // не знаю правильно ли но решил реализовать поиск по золоту взяв первую цифру поэтому такой маленький скрин
COLORMODE(7)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "4.bmp", -1, 80)
$time = 0 // НАШЛИ, ОБНУЛЯЕМ ТАЙМЕР, ПРЕРЫВАЕМ ЦИКЛ
GETSCREEN (0,0, 800,800) // нашли. разворачиваем на весь экран
COLORMODE(7)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "f.bmp", -1, 80)
LCLICK($_return1, $_return2)
WAITMS(100)
SOUND("sirenhilo.wav")
WAITMS(500)
HALT
ELSE //не нашли жмем кнопку "следующий"
GETSCREEN (0,0, 800,800)
COLORMODE(7)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "s.bmp", -1, 80)
WAITMS(500)
END_IF
END_CYC
IF($time ! 0)
GOTO (poisk) // тут наверно это лишнее.
END_IF
// в итоге по этому сценарию базы не находит-жмет сразу "развернуть на весь экран"
Во вложении скрин цифры для поиска...
Очень надеюсь на вашу помощь и совет.
-
Нажми на автовыравнивание в редакторе, видишь как скрипт перекосило? Это потому что не хватает END_ это как точки в предложениях, чтобы кликер смог понять где кончаются условия, циклы, подпрограммы и тд.
//ищем и жмем кнопку "Атака"
WAIT(1)
GETSCREEN (0,0, 800,800)
COLORMODE(7)
IF_PICTURE_IN (0,0, 760,670, "a.bmp", -1, 80)
LCLICK($_return1, $_return2)
WAIT(1)
GETSCREEN (0,0, 800,800)//ищем и жмем кнопку "Найти"
COLORMODE(7)
IF_PICTURE_IN (0,0, 760,670, "b.bmp", -1, 80)
LCLICK($_return1, $_return2)
poisk: //метка нужна для возврвта если "6.bmp" не найдена (под вопросом)
$time = $_time_t + 5
WHILE($time > $_time_t)
GETSCREEN (635,41, 650,58) // не знаю правильно ли но решил реализовать поиск по золоту взяв первую цифру поэтому такой маленький скрин
COLORMODE(7)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "4.bmp", -1, 80)
$time = 0 // НАШЛИ, ОБНУЛЯЕМ ТАЙМЕР, ПРЕРЫВАЕМ ЦИКЛ
GETSCREEN (0,0, 800,800) // нашли. разворачиваем на весь экран
COLORMODE(7)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "f.bmp", -1, 80)
LCLICK($_return1, $_return2)
WAITMS(100)
SOUND("sirenhilo.wav")
WAITMS(500)
HALT
ELSE //не нашли жмем кнопку "следующий"
GETSCREEN (0,0, 800,800)
COLORMODE(7)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "s.bmp", -1, 80)
WAITMS(500)
END_IF
END_CYC
IF($time ! 0)
GOTO (poisk) // тут наверно это лишнее.
END_IF
// в итоге по этому сценарию базы не находит-жмет сразу "развернуть на весь экран"
-
Благодарю, так действительно приятнее работать с скриптом. ) После добавления END_IF в конце скрипта, ничего не изменилось, на кнопку "следующий" кликер не тыкает, всегда разворачивает окно и HALT . Вот видео процесса https://drive.google.com/open?id=0B3X-rzXVPqnedXhnTG9UbWk0WWs&authuser=0 (https://drive.google.com/open?id=0B3X-rzXVPqnedXhnTG9UbWk0WWs&authuser=0)
Как по Вашему что не так?
-
А при чём здесь конец скрипта? В скрипте не хватает четырёх END_IF
2 из которых перед 33 строкой.
2 остальных... может и в конце, смотря какая логика строится.
Если добавляешь область в GETSCREEN, добавляй уже и к COLORMODE, она самая медленная.
Если в GETSCREEN задана область, как здесь:
GETSCREEN (635,41, 650,58) // не знаю правильно ли но решил реализовать поиск по золоту взяв первую цифру поэтому такой маленький скрин
COLORMODE(7)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "4.bmp", -1, 80)
В прилегающем поиске IF_PICTURE_IN нужно обычно указывать область не больше заданной.
А здесь получается, сохранили в буфер (635,41, 650,58), а ищем по всему экрану (0,0, $_xmax,$_ymax)
что оно там может найти в необновляемых частях, мусор какой давности, неизвестно.
-
Vint, я ж говорю мозгов не хватает. )) Спасибо что не прошли мимо.
$time = $_time_t + 5
WHILE($time > $_time_t)
GETSCREEN (620,40, 655,60) // не знаю правильно ли но решил реализовать поиск по золоту взяв первую цифру поэтому такой маленький скрин
COLORMODE(7, 620,40, 655,60)
IF_PICTURE_IN (620,40, 655,60, "4.bmp", -1, 80)
$time = 0 // НАШЛИ, ОБНУЛЯЕМ ТАЙМЕР, ПРЕРЫВАЕМ ЦИКЛ
GETSCREEN (0,0, 800,800) // нашли. разворачиваем на весь экран
COLORMODE(7, 0,0, 800,800)
IF_PICTURE_IN (0,0, 800,800, "f.bmp", -1, 80)
LCLICK($_return1+5, $_return2+3)
WAITMS(3000)
SOUND("sirenhilo.wav")
WAITMS(500)
HINTPOPUP("Найдено")
HALT
ELSE //не нашли жмем кнопку "следующий"
GETSCREEN (0,0, 800,800)
COLORMODE(7, 0,0, 800,800)
IF_PICTURE_IN (0,0, 800,800, "s.bmp", -1, 80)
WAITMS(500)
END_IF
END_IF
END_IF
END_CYC
IF($time ! 0)
GOTO (poisk) // тут наверно это лишнее.
END_IF
Помогите расставить правильно это "точки". У меня сейчас не получается добиться листания баз если не найден "4.bmp". Если "4.bmp" попадается сразу, то кликер делает что нужно, разворачивает на весь экран и издает сигнал. Может вы как то по другому видите реализацию данной задачи?
-
Помогите расставить правильно это "точки". У меня сейчас не получается добиться листания баз если не найден "4.bmp".
Всё просто, у тебя вообще НЕТ листания. Ну вот нет и всё. Клик такой не прописан.
GETSCREEN (0,0, 800,800)
COLORMODE(7, 0,0, 800,800)
IF_PICTURE_IN (620,40, 655,60, "4.bmp", -1, 80)
IF_PICTURE_IN (0,0, 800,800, "f.bmp", -1, 80)
LCLICK($_return1+5, $_return2+3)
WAITMS(3000)
END_IF
SOUND("sirenhilo.wav")
WAITMS(500)
HINTPOPUP("Найдено")
HALT
END_IF
// жмем кнопку "следующий"
IF_PICTURE_IN (0,0, 800,800, "s.bmp", -1, 80)
LCLICK($_return1+5, $_return2+4)
WAITMS(450)
END_IF
WAITMS(50)
И почему ты ищешь цифру "4", да ещё и на такой территории?
В задаче ведь "от 500 000".
-
Ну как бы вот эта кнопка на которую нужно нажать если не нашли "4.bmp"
// жмем кнопку "следующий"
IF_PICTURE_IN (0,0, 800,800, "s.bmp", -1, 80)
LCLICK($_return1+5, $_return2+4)
WAITMS(450)
END_IF
WAITMS(50)
Ищу 4 т.к. таких баз больше, для тестирования в общем... Условие "от 500 000" снизилось до 400 000. ))) Ну это я думаю не принципиально. По задумке таких цифр будет несколько, когда нужна пожирнее и есть время ждать, можно и 8 подставить. )) А на территории такой... ну я х.з. если на всем экране искать, комп задумывается, я оставляю небольшое окно флешки в углу экрана. А "IF_PICTURE_IN (620,40, 655,60, "4.bmp", -1, 80)" т.к. пытаюсь ограничить этими рамками зону поиска т.к. такую цифру кликер может найти в другом месте, например слева там где мои ресурсы отображаются (вложение). Может это не очень правильно?
И еще, в предыдущем ответе Вы написали исправленный скрипт, мне его куда вставить? Он же без "$time = $_time_t". В общем малёха запутался я чет.
-
Ну как бы вот эта кнопка на которую нужно нажать если не нашли "4.bmp"
Ну так это я прописал нажатие. У тебя нажатия нет, только поиск и всё.
А на территории такой... ну я х.з. если на всем экране искать, комп задумывается, я оставляю небольшое окно флешки в углу экрана. А "IF_PICTURE_IN (620,40, 655,60, "4.bmp", -1, 80)" т.к. пытаюсь ограничить этими рамками зону поиска т.к. такую цифру кликер может найти в другом месте, например слева там где мои ресурсы отображаются (вложение). Может это не очень правильно?
Всё нормально, я не на те координаты глянул.
И еще, в предыдущем ответе Вы написали исправленный скрипт, мне его куда вставить? Он же без "$time = $_time_t". В общем малёха запутался я чет.
Можно так:
LOGCLEAR
//ищем и жмем кнопку "Атака"
WAIT(1)
GETSCREEN (0,0, 761,671)
COLORMODE(7, 0,0, 760,670)
IF_PICTURE_IN (0,0,760,670, "a.bmp", -1, 80)
LCLICK($_return1, $_return2)
WAITMS(500)
ELSE
LOGWRITE ("Не нашли -Атака-")
HALT
END_IF
$time = $_time_t + 15
WHILE($time > $_time_t)
GETSCREEN (0,0, 761,671)
COLORMODE(7, 0,0, 760,670)
IF_PICTURE_IN (0,0, 760,670, "b.bmp", -1, 80)
LCLICK($_return1, $_return2)
$time = 0
WAITMS(500)
END_IF
WAITMS(50)
END_CYC
IF($time ! 0)
LOGWRITE ("Не нашли -Найти-")
HALT
END_IF
WHILE(1)
GETSCREEN (0,0, 800,800)
COLORMODE(7, 0,0, 800,800)
IF_PICTURE_IN (620,40, 655,60, "4.bmp", -1, 80)
IF_PICTURE_IN (0,0, 800,800, "f.bmp", -1, 80)
LCLICK($_return1+5, $_return2+3)
WAITMS(3000)
END_IF
SOUND("sirenhilo.wav")
WAITMS(500)
HINTPOPUP("Найдено")
HALT
END_IF
// жмем кнопку "следующий"
IF_PICTURE_IN (0,0, 800,800, "s.bmp", -1, 80)
LCLICK($_return1+5, $_return2+4)
WAITMS(450)
END_IF
WAITMS(50)
END_CYC
Ну, "до 400 000" это и 300 000 и 72 000.
Тогда уж в задании нужно писать 300000-400000
-
Vint, отдуши. Всё работает. Но есть 2 вопроса.
1. Как сделать чтоб можно было свернуть окошко "флешки" чтоб процесс не мешал работе на ПК. Я так понимаю включить привязку к окну, тогда координаты будут не актуальны. Я вот не знаю если вместо (0,0, 800,800) прописать (0,0, $_xmax,$_ymax,) кликер будет весь экран скринить или только окно к которому привязан?
2. Схема с циферками не идеальна т.к. выставив например 4 (для поиска от 400 000 до 499 999) пролистываются базы с 500 000+. Может можно как то задать несколько параметров поиска указав на картинки с цифрами 5,6,7 чтоб поиск был от 400 000 до 799 999? Возможно есть иной способ это реализовать, и я мыслю ограниченно в силу своих скудных познания Clickermannа...
-
1. Можно, но там много нюансов нужно пробовать.
Координаты нужно переделывать на локальные.
гетскрин будет не на всём экране, а только в окне.
2. Я про то и говорю.
"чтоб поиск был от 400 000 до 799 999" нужно в определённой позиции искать цифры 4 или 5 или 6 или 7