Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Vadim8 on November 03, 2017, 07:57:08 PM
-
Ребят помогите с таким вопросом. Есть одна браузерная онлайн игра в которой мне надо быстро входить и выходить на низкоуровневых персонажах и проверять наличие одного квеста. На своем нубском уровне я написал такой скрипт:
WAITMS(400) // выбор мурзилы на панели задач
LCLICK(533,749) //
WAITMS(200) //
GETSCREEN //
$check = 0 // проверка загружено ли окно
WHILE($check = 0) // входа в игру и ввод ника и пароля
IF_PICTURE_IN (672,412, 770,519, "murzila1.bmp") //
GETSCREEN //
WAITMS(500) //пароль
LCLICK(784,500)
LCLICK(784,500)
WAITMS(500)
KEYPRESS (#4)
WAITMS(20)
KEYPRESS (#1)
WAITMS(20)
KEYPRESS (#1)
WAITMS(20)
KEYPRESS (#3)
WAITMS(20)
KEYPRESS (#1)
WAITMS(20)
KEYPRESS (#2)
WAITMS(20)
LCLICK(786,481) // ник
LCLICK(786,481)
WAITMS(500)
KEYPRESS (219)
WAITMS(20)
KEYPRESS (74)
WAITMS(20)
KEYPRESS (86)
WAITMS(20)
KEYPRESS (90)
WAITMS(20)
KEYPRESS (82)
WAITMS(20)
KEYPRESS (52)
WAITMS(20)
KEYPRESS (49)
WAITMS(20)
$check = 1
else
WAITMS(200)
end_if
end_cyc
WAITMS(50)
KEYDOWN (#ENTER) // вход в игру
KEYUP (#ENTER) //
getscreen // цыкл на проверку загрузилась игра или нет
$check = 0
WHILE($check = 0)
getscreen
IF_PICTURE_IN (723,500, 1024,721, "murzila2.bmp")
getscreen
IF_PICTURE_IN (723,500, 1024,721, "murzila3.bmp")
getscreen
$check = 1
end_if
else
WAITMS(200)
end_if
end_cyc
Getscreen // и вот главное проверка наличия квеста
WAIT(1)
IF_PIXEL_IN (272,78, 796,526, 333557)
Getscreen
HINTPOPUP ("Замок нашелся ХОМЯК41", ["ЗАМОК"])
LOGWRITE ("Замок нашелся ХОМЯК41")
WAIT(1)
end_if
WAITMS(500) // клик на кнопку выход
LCLICK(995,711)
Кликер сначала кликает на панель задач где находится первый браузер (1 из четырех), потом вводит пароль ник входит в игру проверяет загрузилось ли окно игры. После должна выполнится проверка на наличие квеста, но к сожелению она то срабатывает то нет. Далее кликер делает такой же самый скрипт только там я изменяю браузер на панели задач ник и пароль к персонажу. тоесть этот скрипт я копирую больше 100 раз (зависит от количества персонажей которых надо провверить).
Главная проблема в том что вот этот цыкл:
Getscreen // и вот главное проверка наличия квеста
WAIT(1)
IF_PIXEL_IN (272,78, 796,526, 333557)
Getscreen
HINTPOPUP ("Замок нашелся ХОМЯК41", ["ЗАМОК"])
LOGWRITE ("Замок нашелся ХОМЯК41")
WAIT(1)
end_if
то срабатывает то нет. Помогите пож. решить проблему. Понимаю что умельцам это покажется смешно но я все же прошу совета.
-
Главная проблема в том что вот этот цыкл:
Это не цикл.
Странно у тебя гетскрины расставлены. Зачем они внутри условий поиска?
Не находит... ну банально, потому, что такого цвета может не быть. Анимация там, тени, сглаживание и т.д. Нужно делать скрины и смотреть. Применять Colormode.
Или не зватает времени для появления. Времени ты ему совсем не оставляешь после преведущего нахождения. Может это так и нужно, хз, зависит от ситуации, но обычно нет.
-
Квадратные скобки в скрипте не пишут, ими обозначены необязательные параметры.
-
Ребят помогите поправить понимаю что это для вас мягко говоря бред. Насчет Getscreen натыкал их везде где только можно с моей точки зрения это не помешает выполнению сценария, опять же понимаю что знаний ноль.
Суть такова, что если я захожу на персонажа и там есть квест то такой цвет там точно присутствует, насчет времени вполне возможно что его нехватает так как если повторить цыкл при загруженной страничке запись в лог происходит нормально.
Визуально когда кликер заходит на страничку и там присутствует картинка квеста с нужным для меня цветом кликер может проигнорировать ее, а может вывести сообщение и записать в лог. скрин обьекта приложу может это както поможет. Буду очень благодарен если поможете разобраться.
-
Исправил что можно.
Чтобы функция KEYSTRING правильно печатала текст, раскладки в кликере и целевом окне должны совпадать En.
Кроме того тебе нужно скачать последнюю бетта версию кликера. только там KEYSTRING сможет напечатать квадратные скобки.
http://crapware.aidf.org/forum/index.php?topic=356.msg23510#msg23510 (http://crapware.aidf.org/forum/index.php?topic=356.msg23510#msg23510)
Добавил сохранение снимка в файл. Если не сработало сам сможешь проверить что там в данный момент видел кликер.
// выбор мурзилы на панели задач
LCLICK(533,749)
WAITMS(200)
$check = 0 // проверка загружено ли окно
WHILE($check = 0) // входа в игру и ввод ника и пароля
GETSCREEN
IF_PICTURE_IN (672,412, 770,519, "murzila1.bmp")
WAITMS(500) //пароль
LCLICK(784,500)
LCLICK(784,500)
WAITMS(50)
KEYSTRING("411312")
WAITMS(20)
LCLICK(786,481) // ник
LCLICK(786,481)
WAITMS(50)
KEYSTRING("[jvzr41")
WAITMS(200)
$check = 1
else
WAITMS(100)
end_if
end_cyc
KEYPRESS(#ENTER) // вход в игру
WAITMS(100)
// цыкл на проверку загрузилась игра или нет
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PICTURE_IN (723,500, 1024,721, "murzila2.bmp")
IF_PICTURE_IN (723,500, 1024,721, "murzila3.bmp")
$check = 1 //
end_if
else
WAITMS(100)
end_if
end_cyc
// и вот главное проверка наличия квеста
WAIT(1)
GETSCREEN
SCREENSHOTEX(272,78, 796,526, "Image_", 0) // Для теста сохраняем снимок в файл
IF_PIXEL_IN (272,78, 796,526, 333557)
HINTPOPUP ("Замок нашелся ХОМЯК41", "ЗАМОК")
LOGWRITE ("Замок нашелся ХОМЯК41")
WAIT(1)
end_if
WAITMS(500) // клик на кнопку выход
LCLICK(995,711)
WAITMS(400)
HALT // Стоп
-
Oraven, kiril большое спасибо.
Oraven, чесно говоря немогу понять принцыпиальной разницы, но все работает как надо, может проблема была в том что я натыкал гетскринов везде и поставил ненужные скобки. Тем не менее огромное спасибо за потраченное на меня время.
kiril да вы правы пароли и ники персонажей изменяются. Игровых действий в игре производить ненадо, проверка двух картинок нужна так как бывает что одна часть игры загрузилась а вторая еще нет. Заковыка у меня только в том что я поочередно переключаюсь между разными браузерами ввожу ники и пароли на разных языках, проверяю есть ли на картинке квест и выхожу с игры. Поэтому я решил тупо копировать один и тот же скрипт сто раз и изменять его под браузер язык введения ника пароля. по другому ввиду своих ограниченных знаний недодумался. Было бы круто сделать все одним небольшим скриптом но я просто еще незнаю как.
-
Доброго времени суток.
Не хочу плодить новые темы, напишу в этой, так как мой вопрос по команде IF_PIXEL_IN.
Есть поиск пикселя:
WAITMS(200)
GETSCREEN
$flag=0
WHILE ($flag=0)
IF_PIXEL_IN(1356,173, 1442,228, 500129, 557184)
$flag=1
END_IF
WAITMS(200)
END_CYC
Т.е. при совпадении искомого пикселя цикл заканчивается.
Замечательно все работает.
Подскажите, как организовать цикл, что-бы при нахождении искомого пикселя цикл продолжался, а заканчивался только в том случае, когда пиксель не будет найден.
Спасибо.
-
да ладно kiril, не нервничай :). ответ то простой, нужно добавить "иначе" в условие.
WAITMS(200)
GETSCREEN
$flag=0
WHILE ($flag=0)
GETSCREEN
IF_PIXEL_IN(1356,173, 1442,228, 500129, 557184)
else
$flag=1
END_IF
WAITMS(200)
END_CYC
не забывай обновлять графический буфер перед поиском пикселя, GETSCREEN.
-
да ладно kiril, не нервничай :). ответ то простой, нужно добавить "иначе" в условие.
WAITMS(200)
GETSCREEN
$flag=0
WHILE ($flag=0)
GETSCREEN
IF_PIXEL_IN(1356,173, 1442,228, 500129, 557184)
else
$flag=1
END_IF
WAITMS(200)
END_CYC
не забывай обновлять графический буфер перед поиском пикселя, GETSCREEN.
Спасибо, разобрался.