Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Dampil on March 16, 2016, 08:14:49 PM
-
Доброго времени суток! Проблемка небольшая возникла при попытке написания "бота" для браузерки glory-wars.net. Имеется необходимость оценки числового параметра в окне. В принципе, можно делать скриншот и оценивать картинки, но диапазон интересующих чисел от 0 до 16, соответственно код начинает попахивать индуизмом и лишними if. Вот и возник вопрос, есть ли возможность из окна выцепить число напрямую. Пока писАл, появились мысли насчёт проверки по картинке... Просьба всё-таки ответить, если указанная выше возможность существует
-
http://crapware.aidf.org/forum/index.php?topic=33.msg8320#msg8320
Кнопку "Поиск" с форумов можно удалять. Она больше никому нафиг не нужна.
-
http://crapware.aidf.org/forum/index.php?topic=33.msg8320#msg8320
Кнопку "Поиск" с форумов можно удалять. Она больше никому нафиг не нужна.
И тебе привет и спасибо за конструктивную, пусть и несколько негативно эмоционально окрашенную критику. Прошу прощения, в силу обстоятельств субъективного характера не смог придумать поисковый запрос
-
Kirill, там всё проще: тупо счётчик, согласно которому можно сделать за день N одних действий и M других. Прозрачность и иные "извращения" отсутствуют.
Вид строки примерно:
"Баллов первого вида: N+#10#13+Баллов второго вида: M"
Если и того и другого по нулям, то ставим перса работать.
Сорь за некоторое косноязычие описания строки, учился "Объектному дяде Боре" да и то давно. Подумываю над вариантом проверки равенства N и M нулю по картинке, что сразу отрежет почти весь диапазон, указанный выше
-
Всем спс за поддержку. Криво-косо, но уже работает. Если кому нужен скрипт, к понедельнику(скорей всего) выкину сюда
-
то ли лыжи не едут, то ли смазаны плохо...
Сегодня скрипт перестал работать от слова "совсем". Кто-нить сталкивался с таким? Сам скрин и "поисковые" файлы выложил, сделаны в одном окне, при одинаковом разрешении.
getscreen
if_picture_in(300,629, 513,661,"1.bmp")
остальной код не выкладываю, сбой в самом начале идёт:(
-
насчёт изменения - не совсем понял. Просто пробовал без цветокоррекции делать со свежего скрина "вырезку", эффекта ноль. Или имелось в виду, что меняется цветовое наполнение фрагмента при перезагрузке страницы? то бишь, часть экрана заливается цветом, на глаз неотличимым от чёрного(например), но с некоторыми отклонениями по "составляющим" цвета?
с применением цветокоррекции( рекомендую COLORMODE(6)) сохраняете и ищите новые.
если правильно понял, то что-то типа
getscreen
colormode(6)
screenshotex(по интересующим координатам)
для сохранения "образца"?
-
кстати, закономерный вопрос. В одной из тем писАлось, что if_picture_in - вполне себе процедура. При этом в хелпе напрямую указано, что это тот же if. Так всё же, условие или процедура?
-
getscreen
colormode(6)
if_picture_in(268,690,424,716,"shot0001.bmp")
// beep(100,1000) использовал для проверки выполнения условия
if_picture_in(270,650,426,678,"shot0000.bmp")
move(230,241)
wait(3)
LCLICK(230,241) // город
wait(3)
move(283,289)
wait(3)
LCLICK(283,289) // работа
wait(3)
move(833,620)
wait(3)
LCLICK(833,620) // встаём на час
wait(3590)
move(956,194)
wait(3)
LCLICK(956,194) // идём за голдой
wait(3)
move(759,626)
wait(3)
LCLICK(759,626) // берём голду
end_if
end_if
мб, где-то в коде накосячил? Хотя, сомневаюсь, без условий кликает, аж за ушами трещит
"образцы" сняты тоже при колормод 6, размер "окна поиска" больше искомого изображения.
-
getscreen
colormode(6)
if_picture_in(268,690,424,716,"shot0001.bmp", -1, 100)
// beep(100,1000) использовал для проверки выполнения условия
if_picture_in(270,650,426,678,"shot0000.bmp", -1, 100)
move(230,241)
wait(3)
LCLICK(230,241) // город
wait(3)
move(283,289)
wait(3)
LCLICK(283,289) // работа
wait(3)
move(833,620)
wait(3)
LCLICK(833,620) // встаём на час
wait(3590)
move(956,194)
wait(3)
LCLICK(956,194) // идём за голдой
wait(3)
move(759,626)
wait(3)
LCLICK(759,626) // берём голду
end_if
end_if
поколдуи если что над процентом соответствия, снизь 100, но менее, чем 70%
-
Всем спс за советы. Мешал бот для WoW под названием WRobot(мог бы и догадаться, он и Punto Switchery портит работу, такое чуйство, что с буфером активно работает. Не уверен на все 100, ибо строение системы помню только в плане вытесняющей многозадачности) и/или долгое невыключение компа. Заработало, блин. Следствие второго закона Чизхольма в действии ;D Жаль, плюсомёт в форум не встроен, всем бы выразил "спс" за терпимость к моим завываниям.. Как и обещал, код выложу как только "докручу". Пока только устраивается на работу, если все "баллы" закончились.
Кстати, появилась непонятка: scanpicture выдавал массив на полторы тысячи элементов... Эт как? Если правильно понимаю, он должен выдавать координаты нахождения искомого изображения или я не правильно понимаю?
-
кстати, закономерный вопрос. В одной из тем писАлось, что if_picture_in - вполне себе процедура. При этом в хелпе напрямую указано, что это тот же if. Так всё же, условие или процедура?
Это гибрид.
Кстати, появилась непонятка: scanpicture выдавал массив на полторы тысячи элементов... Эт как? Если правильно понимаю, он должен выдавать координаты нахождения искомого изображения или я не правильно понимаю?
Значит нашлось полторы тысячи совпадений с образцом.
-
Кстати, появилась непонятка: scanpicture выдавал массив на полторы тысячи элементов... Эт как? Если правильно понимаю, он должен выдавать координаты нахождения искомого изображения или я не правильно понимаю?
вероятно массив набрал 1000 элементов не за одно выполнение scanpicture. дело в том, что перед выполнением scanpicture, массив не обнуляется, и все найденные координаты искомой картинки добавляются в конец массива.
-
если не обнулять массив, то результаты суммируются. К примеру координаты разных картинок могут сливаться в один массив или поиск одной картинки в цикле по времени, тоже за продолжительное время насканирует 1500 координат- это 750 раз найдена картинка.
при этом, с учётом того, что массив не инициализировался, за один проход получилось случайное число+2 координаты от найденной картинки. Так?
-
за один проход получилось случайное число+2 координаты от найденной картинки. Так?
за один проход получаем массив из 2 элементов, координат х, у, твоеи картинки. и все. перед scanpxl очищаи массив через undefine/ никаких случаиных чисел у тебя там быть не может
-
за один проход получаем массив из 2 элементов, координат х, у, твоеи картинки. и все. перед scanpxl очищаи массив через undefine/ никаких случаиных чисел у тебя там быть не может
некритично в данном случае. Прост интересовало наличие картинки в "окне". Спс за ответ, тем не менее
-
некритично в данном случае. Прост интересовало наличие картинки в "окне". Спс за ответ, тем не менее
Если интересовало наличие, зачем тогда SCANPICTURE?
IF_PICTURE_IN и всё.
-
Такое чувство, что сетевой разум против меня и нео - смерть его:( Или же Kirill прав и надо периодически менять картинку. Эххх, задумка проработала 3 дня. Выкладывать тупой клик по кнопкам считаю недостойным сего форума. Всем сорь за отнятое время и спс за помощь
-
Такое чувство, что ты не воспринимаешь или не внедряешь советы.
Судя по твоим высказываниям, процент совпадения картинок, ты не используешь и с очисткой массива не разобрался. Ещё одна из самух распостранённых причин "поломки" работающего скрипта, изменение время отклика сайта, обычно это случается в конце месяца, когда лемит гигабайт превышен и провайдер снижает скорость или игре или игроку и сразу все настроенные задержки котику под хвостик, что загружалось полсекунды, крузипся по 30 и весь скрипт за это время пролетает мимо. Могут быть и другие причины ваших неполадок. :'(
ни в коем случае не осуждаю, не писАл ни куска "кода" сюда.
sub (wcl, $x,$y)
wait(rnd(2.2,3)
move($x,$y)
waitms(Rnd(250,340))
lclick($x,$y)
end_sub
wait(1)
wcl(106,15) //открываем первую вкладку
wcl(173,237)
wcl(231,182) //в харчевню
wcl(416,204) //на поручения
getscreen
colormode(8)
if_picture_in(268,690,424,716,"AP.bmp",-1,95)
if_picture_in(267,651,456,690,"QP.bmp",-1,95)
wcl(156,246) // город
wcl(239,288) // работа
wcl(822,637) // встаём на час
wait(3595)
wcl(960,176) // идём за голдой
wcl(720,661) // собираем
wait(RND(3,5))
end_if
else
//в ходе игры очки поручений расходуются быстрей, чем очки действия, так что одного двойного условия достаточно
wcl(173,237)
wcl231,182) //в харчевню
wcl(416,204) //на поручения
wcl(922,600) //начинаем
wait(5)
wcl(837,652) // клик на "показать результат"
wcl(643,515) //"в харчевню"
wcl(922,600) //берём награду
wait(595) //ждём окончания отдыха
wait(900)
end_if
по поводу wait и waitms в подпрограмме: wait - для ожидания прогрузки картинки(слихвой хватает на моём кабельном канале, на других, не пробовал), waitms - ожидание между перемещением курсора и кликом по элементу окна.
процент делал от 70 до 95. Результат: очки действия(AP.bmp) ищутся, очки поручений(QP.bmp) - нет.
Согласен, повторюсь, на основании предыдущих сообщений можно было предположить, что я мало понимаю и никого не слушаю, просто пытаюсь пробить головой стену.
-
Согласен, не учтён ещё один игровой момент - пвп. Но там достаточно странная система поиска для невипов, так что не стал мудрить лишний раз. насчёт обнуления массивов: вполне логично поблагодарил за напоминание о необходимости явной инициализации переменных. В итоге, на тот момент старый(без scanpicture) код вполне себе заработал, так что необходимость в работе с массивами как таковыми отпала напрочь
-
В 28 строке не хватает скобок
wcl(231,182) //в харчевню
Так же не хватает закрывающей скобки во 2 строке
wait(rnd(2.2,3)
К тому же функция RND целочисленная
RND (a, b) - числовая функция; возвращает целое число, выбранное случайно из заданного интервала
В итоге у тебя первый параметр "2.2" воспринимается как строка или логическая 1 и задержка фактически RND(1,3), т.е. 1, 2 или 3 сек.
Вот демонстрация:
FOR($i=0, $i < 10)
print(rnd(8.2,10))
END_CYC
HALT
Указывай в милисекундах
WAITMS(rnd(2200, 3000))
-
спс за совет, попробую.
**********, да в какОм состоянии я логику продумывал?! Всем ещё раз спс, ошибка была не только в командах
-
Если цифру в поле игры можно выделить мышкой или даблкликом, то я использую такой изящный способ распознавания:
DBLCLICK(738,793) // выделяем цифру двойным кликом
WAITMS (50)
KEYDOWN (#CTRL) // копируем в буфер
WAITMS (50)
KEYDOWN (#C)
WAITMS (50)
KEYUP (#C)
KEYUP (#CTRL)
$summ = INT(FROMCLIP()) // назначаем переменной значение из буфера
А дальше уже работаем с назначенной переменной как душе угодно. И никакого распознавания тысяч картинок, которые хитровыделанный админ может менять в день по 3 раза, то керн шрифта, то сам шрифт, то цвет шрифта, то цвет фона, то еще что-то. Меня в определенный момент задрало перефоткивать картинки раз в неделю и сделал вот так. Таким-же способом можно определять и появление нужного текста в нужном месте. Главное чтобы оно было не кликабельно и было выделяемым. Во флешах не проканает.
-
по твоему копирование экрана в буфер гетскрином с последующим поиском там нужной картинки более изящно чем копирование в буфер нужного куска текста?
Ну-ка расскажи нам маэстро, что придумал ты.