Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (2): [1] 2 »   

> Без описания
a_master
Отправлено: 17 Июня, 2013 - 18:52:53
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2013  
Репутация: 0




Смысл как я понимаю ситуацию - искать на поле нужную картинку и если нашли, то обработать событие нажатие клавиши мышки. и Так в бесконечном цикле. Наваял вот такой вот код. Поиск не дает результата.
Помогите найти в чем косяк.

int honey[10][5];
int PosX_0[1], PosY_0[1];

loadimage (#honey[0][0], "C:\terfarm\honey.bmp");

int color, xe, ye;
getdisplay(color, xe, ye);//Узнать разрешение экрана

n: if (findimage(1, #honey[0][0], 16777215, #PosX_0[0], #PosY_0[0], 0, 0, xe, ye, -1)==0)
{
sleep(50);
}
else
{
mousedbl(LEFT, PosX_0[0]+imagewidth(#honey[0][0])/2, PosY_0[0]+imageheight(#honey[0][0])/2, 1, wind);
mouse(LEFT, PosX_0[0]+imagewidth(#honey[0][0])/2, PosY_0[0]+imageheight(#honey[0][0])/2);
}
goto n;

w=window ("Однокласники - Google Chrome", "Chrome_WidgetWin_1", -1)
activate(w);
sleep(500);

(Отредактировано автором: 17 Июня, 2013 - 22:07:54)

 
 Top
Kibor
Отправлено: 18 Июня, 2013 - 19:17:31
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




mousedbl(LEFT, PosX_0[0]+imagewidth(#honey[0][0])/2, PosY_0[0]+imageheight(#honey[0][0])/2, 1, wind);

w=window ("Однокласники - Google Chrome", "Chrome_WidgetWin_1", -1)

Имя указателя w. В скрипте wind.

И еще, w объявлена где то? win w.
 
 Top
a_master
Отправлено: 19 Июня, 2013 - 22:11:55
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2013  
Репутация: 0




Спасибо, исправился. Это я завтыкал.

В продолжение темы: я сделал анализ игрушки по поводу искомых изображений.
Обнаружил, что одна и та же картинка каждый раз выглядит по разному.
Например беру какой-то объект. Например яблоко. Делаю картинку например 5 на 5 пикселей.

Запускаю скрипт. Он отрабатывает, находит картинку, кликает на ней. Все ок. Через минуту на этом месте появляется новое яблоко. НО! оно эта самая картинка 5 на 5 пикселей уже другая. то есть пиксели поменялись. Иногда измерилось всего 1-2 пикселя (светлее или темнее) иногда половина совершенно другая.

Я пробовал сделать несколько разных картинок объекта, даже получилось пару раз. Но именно что пару раз.

Вопрос. как можно обойти эту проблему?
 
 Top
Kibor
Отправлено: 19 Июня, 2013 - 22:51:13
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




Во время игры при появление яблока перейдите на графику. Нажмите CTRL+SHIFT+S. В окне Кибор появится изображение игры. В процессе игры когда появится другое яблоко нажмите CTRL+SHIFT+A 2 раза. Это включит и выключит фильтр меняющихся пикселей. Все изменившиеся пикселя подсветятся красным. Так повторите несколько раз пока или все яблоко не станет красным (тогда нельзя буде производить поиск по яблоку и придется искать другую привязку) или не останутся на яблоке не выделенные красным пикселя . В таком случае именно их надо использовать при поиске. Выделить яблоко и нажать правую кнопку мыши - снять выделение с динамики. Сохранить оставшееся в файл и его искать.
Подробнее тут: Подготовка графики
 
 Top
a_master
Отправлено: 20 Июня, 2013 - 09:20:48
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2013  
Репутация: 0




Судя по всему при отображении картинки в полный экран происходит "рендомное" сжатие и пиксели подбираются случайным образом из близкого диапазона. В фильтре динамики все красное.

Я тут подумал что можно просто описать области (например там будут все оттенки коричневого) размером этак 7х7 и10х10 и искать в них пиксель например желтого цвета. Если хоть один их них в области есть, то это то что мы ищем.

Проблема которую я вижу, это придется описать довольно много областей (порядка >1000) при самом лучшем случае. Допустим это можно сделать через цикл.

Пока я не начал городить этот монстр-скрипт, может есть ответ по поводу производительности.
Мне надо обработать 1000 областей с размером 7х7 за 1 секунду. Это реально?

Или можно сократить количество областей, но тогда нужна привязка ко времени. Как можно получить текущее время?
(Добавление)
И еще один момент. в полноэкранном режиме при попытке нажать на клавишу Ctrl игрушка вылетает из полноэкранного режима. Можно назначать горячие клавишы или другое решение этого вопроса?

(Отредактировано автором: 20 Июня, 2013 - 09:29:00)

 
 Top
Kibor
Отправлено: 20 Июня, 2013 - 21:03:30
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




 a_master пишет:
Мне надо обработать 1000 областей с размером 7х7 за 1 секунду

Не вариант. Высокое быстродействие гарантируется только если обрабатывать изображение одним вызовом имеющейся соответствующей функции, а не тысячи раз.
Время получить пока никак, так же как и изменить горячие клавиши. В следующей версии быстрее всего добавлю.
Больше посоветовать не могу ничего, так как не видел игры.
 
 Top
baracuda
Отправлено: 12 Июля, 2013 - 13:37:29
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 23
Дата рег-ции: Июль 2013  
Репутация: 1




Не совсем в тематику но всё же. если клик вызывает новое окно.. но мы не знаем какое

как решить такое ?

window ("? - Google Chrome", "Chrome_WidgetWin_1", -1)

ну а для красоты? там ещё найти изображение и его кликнуть ..

Заранее спасибо за ответ

очень мало расписано с браузером в хелпах..
как передать фокус в адресную строку ?
start ("C:\Program Files\Google\Chrome\Application\chrome.exe"Подмигивание;
sleep(2500);
activate(window ("Новая вкладка - Google Chrome", "Chrome_WidgetWin_1", -1));
sleep(2500);
key("www.ru", 1, 1, win wind);
key(RETURN);
sleep(2500);
key("www.ru/www.php", 1, 1, win wind);
key(RETURN);

и ещё, какой оптимальный вариант работы если кликнуть надо где то внизу сайта а для этого надо прокрутить скрол !!!

(Отредактировано автором: 12 Июля, 2013 - 17:01:18)

 
 Top
Kibor
Отправлено: 12 Июля, 2013 - 20:36:53
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




Я хромом не пользуюсь но специально поставил.

Исходя из выложенного кода понял что браузер запускается программно. Написал скрипт реализующий то что описано:

CODE:

start ("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe");//Запустить браузер
n: if (window (-1, "Chrome_OmniboxView", -1)==0){sleep(50); goto n;}//Дождаться его загрузки
sleep(500);

win w_adr=window (-1, "Chrome_OmniboxView", -1);//Получить указатель на поле для ввода адреса
activate(w_adr);//Передать фокус в строку для ввода адреса
sleep(500);

sendtext("filesd.net/stat/autoclicker-kibor.php", w_adr);//Ввод нужного адреса в адресное поле
sleep(500);
key(RETURN);//Жать Enter

sleep(5000);//Пауза для загрузки страницы.
//Вместо большой паузы лучше поставить в 1 секунду и потом искать изображение кнопки обновления страницы. Когда она примет вид закрученной стрелки загрузка завершена.

mouse(LEFT, w_adr.left-27, w_adr.top+5);//Щелкнуть мышью чуть левее поля для ввода адреса передав фокус на главное окно браузера.
sleep(500);

//loop:;
//Искать необходимое изображение на экране
//Если найдено щелкнуть по нему и завершить скрипт если нет других задач.
//goto exit;

//Если не найдено:
key(SPACE);//Если не найдено нажать пробел - страница сдвинется вверх
//goto loop; Перейти опять к поиску изображения

exit:;


Код реализации поиска изображения не приводил. Его можно найти в любой реализации в справке или примерах.
Тестировал на Windows 7.
 
 Top
baracuda
Отправлено: 12 Июля, 2013 - 22:08:24
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 23
Дата рег-ции: Июль 2013  
Репутация: 1




у меня такое простое решение.

start ("C:\Program Files\Google\Chrome\Application\chrome.exe");
sleep(2000);
activate(window ("Новая вкладка - Google Chrome", "Chrome_WidgetWin_1", -1));
sleep(1000);
key("www.ru", 1, 1, win wind);
key(RETURN);
sleep(3000);
mouse(LEFT, 750, 152);
sleep(3000);
mousetransfer(LEFT, 1271, 85, 1271, 150, 0.02);
//----------
int Image[55][17];
loadimage (#Image[0][0], "C:\tupit.bmp");
sleep(3000);
int x[1], y[1];
sleep(3000);
st: if (findimage(-1, #Image[0][0], 16777215, #x[0], #y[0], 0, 2, wind.widthclient, wind.heightclient, wind)<1)goto st;
mouse(LEFT, x[0]+imagewidth(#Image[0][0])/2, y[0]+imageheight(#Image[0][0])/2+3, 1, wind);
sleep(3000);

В поиске ошибка.. но вопрос в другом, самый удачный способ поиска ошибок ? например на этом примере как можно хотя бы визуально осознать что не так ?

За ответы огромное спасибо
 
 Top
Kibor
Отправлено: 12 Июля, 2013 - 22:18:09
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




 baracuda пишет:
st: if (findimage(-1, #Image[0][0], 16777215, #x[0], #y[0], 0, 2, wind.widthclient, wind.heightclient, wind)<1)goto st;

Я не вижу объявления и инициализации указателя wind

 baracuda пишет:
key("www.ru", 1, 1, win wind);

Ошибка. Тип переменной указывать в функции не надо. Я в примере просто указал какой тип идет в параметрах.
key("www.ru", 1, 1, wind);

Возможно так будет работать?:
CODE:

start ("C:\Program Files\Google\Chrome\Application\chrome.exe");
sleep(2000);
win wind=window ("Новая вкладка - Google Chrome", "Chrome_WidgetWin_1", -1);
activate(wind);
sleep(1000);
key("www.ru", 1, 1, wind);
key(RETURN);
sleep(3000);
mouse(LEFT, 750, 152);
sleep(3000);
mousetransfer(LEFT, 1271, 85, 1271, 150, 0.02);
//----------
int Image[55][17];
loadimage (#Image[0][0], "C:\tupit.bmp");
sleep(3000);
int x[1], y[1];
sleep(3000);
st: if (findimage(-1, #Image[0][0], 16777215, #x[0], #y[0], 0, 2, wind.widthclient, wind.heightclient, wind)<1)goto st;
mouse(LEFT, x[0]+imagewidth(#Image[0][0])/2, y[0]+imageheight(#Image[0][0])/2+3, 1, wind);
sleep(3000);
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by