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

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

 Страниц (7): « 1 2 [3] 4 5 6 7 »   

> Без описания
obm
Отправлено: 15 Января, 2014 - 19:22:20
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 47
Дата рег-ции: Янв. 2014  
Репутация: 1




[quote=Kibor]Но числа находятся на прозрачном фоне, и, по моим наблюдениям, даже сами числа частично прозрачны
По каким наблюдениям? Может есть все ж не прозрачные пикселя? Проверьте как тут(для просмотра ссылки Вам необходимо авторизоваться) /quote]
проверить так невозможно, тк инфа вылезает при наведении мыши и ее надо держать
в любом случае продвинутый findimage отлично справляется

Нашел еще интересную функцию sort, но синтаксиса не нашел, даже на форуме. Есть массив numb_arr[][][], мне нужно отсортировать по 2му измерению по возрастанию. Это возможно или нужно все же пользовательскую функцию писать?
допустим, было:
3 11 3
1 15 5
5 4 4
А стало:
5 4 4
3 11 3
1 15 5

[quote=Kibor]10 15 сек не связаны с быстродействием анализа экрана в Кибор. Что то тормозит...
Проверьте быстродействие не запуская игру и лишние программы как в этой теме(для просмотра ссылки Вам необходимо авторизоваться) /quote]
В остальных программах работает нормально. В этой игре - с такой вот задержкой.

Еще хотел узнать, как можно финансово поддержать ваш проект, он должен жить.
 
 Top
Kibor
Отправлено: 15 Января, 2014 - 20:31:13
Post Id



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


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




 obm пишет:
Нашел еще интересную функцию sort, но синтаксиса не нашел, даже на форуме.
http://kibor-bot.com/forum/topic...46217#1374946217
 obm пишет:
Есть массив numb_arr[][][], мне нужно отсортировать по 2му измерению по возрастанию. Это возможно или нужно все же пользовательскую функцию писать?

Реализованы самые распространенные случаи сортировки. Для этого случая надо писать свою функцию.
 obm пишет:
В этой игре - с такой вот задержкой.

Ну используйте без указателя и ограничивайте область поиска. Не обязательно все окно даже. Можно именно окошком где надо работать в игре.
 obm пишет:
Еще хотел узнать, как можно финансово поддержать ваш проект, он должен жить.
Спасибо). Такого нет. Как Вы верно подметили это творчество. Программа будет развиваться пока мне интересно. Мне гораздо интереснее интеллектуальная помощь на форуме и продвижение в общем.
 
 Top
obm
Отправлено: 16 Января, 2014 - 08:38:27
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 47
Дата рег-ции: Янв. 2014  
Репутация: 1




 Kibor пишет:
Спасибо). Такого нет. Как Вы верно подметили это творчество. Программа будет развиваться пока мне интересно. Мне гораздо интереснее интеллектуальная помощь на форуме и продвижение в общем.

Тогда у меня есть не совсем стандартная задача, может что-то сможете подсказать.
Как я уже говорил, делаю торгового бота. Цель - выделить интересные мне товары и скупать их по интересным мне ценам. Товары находятся в разных вкладках аукциона. Распознание товара и цены я практически сделал, чуть-чуть допилить осталось. Распознавание цены уже работает вполне неплохо и стабильно.
Специфика аукциона такая: тот кто выкладывает лот, ставит время торгов, естественно, что крафтеры хотят урвать лакомый кусок по низкой цене, поэтому когда до конца аука остается 1 минута все начинают усиленно делать ставки. Особенно круто, если получается обновить аук за 2-3 сек до конца торгов, он как раз успевает обновиться за 1 сек, и еще 1 сек на установку ставки (она инкрементально увеличивается на 1 шаг, но можно и в ручную сразу большую ставку поставить, чтобы всех перебить, я в ручную ставлю 2 шага, чтобы на упреждение перебить того, кто также поставил в последнюю секунду). Побеждает тот, кто дал лучшую ставку. При этом точное время до конца торгов никто не видит, видно лишь примерное время: менее 3 мин = 120-180сек, 1 минута = 60-120 сек, менее минуты <60 сек. То есть задача обновлять аукцион и попасть в момент перехода с "1 минута" в "менее 1 минуты", а далее отсчитать 57-58 сек и сделать ставку. А сложность основная в том, что я не могу закрепиться за позицией. Допустим у меня 2 позиции со сроком "менее 1 минуты", по обоим я поймал время перехода. Но в определенный момент 1ая позиция уйдет, 2ая останется, но она уже станет 1ой. И у меня будут сложность в ее отслеживании, конечно, можно по истечению таймера переносить ее в массиве в №1, но тут может произойти дисинхрон, а вероятность этого высока.
(Добавление)
Есть еще один механизм - если я делаю ставку, товар появится на вкладке мои ставки, там проще использовать бота, т.к. кол-во позиций значительно меньше и они более "стабильны", то есть меньше вероятность, что уйдет какая-то позиция из списка, и список поплывет. Но есть один огромный минус, если на общей вкладке я могу упорядочить все по времени, то на этой не могу, а надо учитывать, что там еще может быть несколько страниц.
Скрины прилагаю для информации:(для просмотра ссылки Вам необходимо авторизоваться) (для просмотра ссылки Вам необходимо авторизоваться) (для просмотра ссылки Вам необходимо авторизоваться) Может быть сможете что-то посоветовать (не в плане конкретного программирования, а именно схему действий). Теоретически, я могу делать "снимок" позиции и ее искать, вы сказали, есть такой функционал, но с другой стороны, это во-первых это крайне сложно, во-вторых фон полупрозрачный.
Последний вариант самый простой - делать ставку, как только таймер стал менее 1 мин, при этом постоянно обновлять аукцион и отслеживать, моя ли ставка сейчас ведет, по эффективности не на порядок хуже, хотя и чуть хуже, но это не главное, важно, что это совсем не интересно Улыбка.

(Отредактировано автором: 16 Января, 2014 - 08:42:16)

 
 Top
Kibor
Отправлено: 16 Января, 2014 - 10:02:12
Post Id



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


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




Ну киньте в личку скайп и дайте доступ к машине. Я посмотрю насколько там сложно использовать screen.
 
 Top
obm
Отправлено: 16 Января, 2014 - 18:13:32
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 47
Дата рег-ции: Янв. 2014  
Репутация: 1




 Kibor пишет:
Ну киньте в личку скайп и дайте доступ к машине. Я посмотрю насколько там сложно использовать screen.
завтра подготовлю машину

также упорно вылазит баг
recount_loop:;
sleep(100);
getmouse(mouse_x,mouse_y);
textf_x=mouse_x;
textf_y=mouse_y+30;
info_out="";

//ïîèñê 0
n_quan= findimage(-1, #img_n0[0][0], 0, #x[0], #y[0], 0, 0, 1360, 791, 20, 20, 20, 20, 20, 20, 100, 1, -1);
i=0;
prnum0:;
if (i<n_quan){numb_arr[0][1]=x[i];numb_arr[0][i][2]=y[i];i++;goto prnum0;}
info_out=info_out+"0:"+format(i)+" ";

//ïîèñê 1
n_quan= findimage(-1, #img_n1[0][0], 0, #x[0], #y[0], 0, 0, 1360, 791, 20, 20, 20, 20, 20, 20, 100, 1, -1);
i=0;
prnum1:;
if (i<n_quan){numb_arr[1][i][1]=x[i];numb_arr[1][i][2]=y[i];i++;goto prnum1;}
info_out=info_out+"1:"+format(i)+" ";

//ïîèñê 2
n_quan= findimage(-1, #img_n2[0][0], 0, #x[0], #y[0], 0, 0, 1360, 791, 20, 20, 20, 20, 20, 20, 100, 1, -1);
i=0;
prnum2:;
if (i<n_quan){numb_arr[2][i][1]=x[i];numb_arr[2][i][2]=y[i];i++;goto prnum2;}
info_out=info_out+"2:"+format(i)+" ";

//ïîèñê 3
n_quan= findimage(-1, #img_n3[0][0], 0, #x[0], #y[0], 0, 0, 1360, 791, 20, 20, 20, 20, 20, 20, 100, 1, -1);
i=0;
prnum3:;
if (i<n_quan){numb_arr[3][i][1]=x[i];numb_arr[3][i][2]=y[i];i++;goto prnum3;}
info_out=info_out+"3:"+format(i)+" ";
[i](Добавление)

//ïîèñê 4
n_quan= findimage(-1, #img_n4[0][0], 0, #x[0], #y[0], 0, 0, 1360, 791, 20, 20, 20, 20, 20, 20, 100, 1, -1);
i=0;
prnum4:;
if (i<n_quan){numb_arr[4][i][1]=x[i];numb_arr[4][i][2]=y[i];i++;goto prnum4;}
info_out=info_out+"4:"+format(i)+" ";

//ïîèñê 5
n_quan= findimage(-1, #img_n5[0][0], 0, #x[0], #y[0], 0, 0, 1360, 791, 20, 20, 20, 20, 20, 20, 100, 1, -1);
i=0;
prnum5:;
if (i<n_quan){numb_arr[5][i][1]=x[i];numb_arr[5][i][2]=y[i];i++;goto prnum5;}
info_out=info_out+"5:"+format(i)+" ";

//ïîèñê 6
n_quan= findimage(-1, #img_n6[0][0], 0, #x[0], #y[0], 0, 0, 1360, 791, 20, 20, 20, 20, 20, 20, 100, 1, -1);
i=0;
prnum6:;
if (i<n_quan){numb_arr[6][i][1]=x[i];numb_arr[6][i][2]=y[i];i++;goto prnum2;}
info_out=info_out+"6:"+format(i)+" ";

//ïîèñê 7
n_quan= findimage(-1, #img_n7[0][0], 0, #x[0], #y[0], 0, 0, 1360, 791, 20, 20, 20, 20, 20, 20, 100, 1, -1);
i=0;
prnum7:;
if (i<n_quan){numb_arr[7][i][1]=x[i];numb_arr[7][i][2]=y[i];i++;goto prnum2;}
info_out=info_out+"7:"+format(i)+" ";


if (getkeystate(F2)!=1){sleep(50); goto recount_loop;}



проблема явно тут, тексбокс вначале начинает подглючивать, потом вылетает кибор, если раздробить на 10 тексбоксов, все ок
textout(0, textf_x, textf_y, info_out, 0);(для просмотра ссылки Вам необходимо авторизоваться)
 
 Top
Kibor
Отправлено: 16 Января, 2014 - 18:44:29
Post Id



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


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




 obm пишет:
if (i<n_quan){numb_arr[0][1]=x[i];numb_arr[0][i][2]=y[i];i++;goto prnum0;}

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

Так как весь код протестировать не могу, то этот упрощенный код работает нормально.
CODE:
string info_out="";
int i=5;
int x=200, y=200;
recount_loop:;

info_out="";

info_out=info_out+"0:"+format(i)+" ";

info_out=info_out+"1:"+format(i)+" ";

info_out=info_out+"2:"+format(i)+" ";

info_out=info_out+"3:"+format(i)+" ";

info_out=info_out+"4:"+format(i)+" ";

info_out=info_out+"5:"+format(i)+" ";

info_out=info_out+"6:"+format(i)+" ";

info_out=info_out+"7:"+format(i)+" ";
if (getkeystate(F2)!=1){sleep(50); goto recount_loop;}
textout(0, x, y, info_out, 0);
sleep(2000);


Быстрее всего глюк из за ошибки обращения к памяти - из за ошибки в коде.

Еще... Эти кракозябры в комментах из за копирования с Кибора могут повлиять на код при копирование его в таком виде назад в Кибор. Проследите что бы в Кибор их не было.. Это буду устранять...
 
 Top
obm
Отправлено: 16 Января, 2014 - 20:55:28
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 47
Дата рег-ции: Янв. 2014  
Репутация: 1




 Kibor пишет:
Насколько я вижу numb_arr трехмерный массив? В этом месте он двухмерно используется... Ошибка.

странно, в моем коде в киборе косяка нет

 Kibor пишет:
Быстрее всего глюк из за ошибки обращения к памяти - из за ошибки в коде.
действительно, из-за описки в коде происходило, вероятно, переполнение переменной

 Kibor пишет:
Еще... Эти кракозябры в комментах из за копирования с Кибора могут повлиять на код при копирование его в таком виде назад в Кибор. Проследите что бы в Кибор их не было.. Это буду устранять...
такое даже в VBA есть, в VBA вроде как не лечится, обходится копированием в нужной раскладке Улыбка
(Добавление)
Еще хотел узнать, вот в моем коде есть кусок, который повторяется 10 раз

n_quan= findimage(-1, #img_n0[0][0], 0, #x[0], #y[0], 0, 0, 1360, 791, 20, 20, 20, 20, 20, 20, 100, 1, -1);
i=0;
prnum0:;
if (i<n_quan){numb_arr[0][i][1]=x[i];numb_arr[0][i][2]=y[i];i++;goto prnum0;}
textout(0, textf_x, textf_y, "0:"+format(i), 0);
textf_y=textf_y+15;

По-правильному было бы повторить цикл 10 раз, а не делать 10 отдельных кусков, но на картинку невозможно будет сослаться нормально. То есть ее нужно либо загонять в массив картинок, либо использовать составное имя (типо как в VBA через &Подмигивание.
 
 Top
Kibor
Отправлено: 16 Января, 2014 - 21:19:33
Post Id



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


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




 obm пишет:
По-правильному было бы повторить цикл 10 раз, а не делать 10 отдельных кусков, но на картинку невозможно будет сослаться нормально. То есть ее нужно либо загонять в массив картинок, либо использовать составное имя (типо как в VBA через &Подмигивание.

Чем не подходит массив? http://kibor-bot.com/forum/topic...m=1&topic=34

Загоняйте код в теги и отключайте смайлы.
 
 Top
obm
Отправлено: 17 Января, 2014 - 05:18:28
Post Id



Пользователь
Наблюдатель


Покинул форум
Сообщений всего: 47
Дата рег-ции: Янв. 2014  
Репутация: 1




[quote=Kibor]Чем не подходит массив?(для просмотра ссылки Вам необходимо авторизоваться) /quote]
По кибору есть практически готовая справка, но к сожалению, она не структурирована, поэтому многие полезные функции остаются за кадром.

Еще из моментов, достойных внимания, могу отметить не рабочие сочетания shift+ctrl+стрелки/end/home, может только я к ним так привык, но работу в разы ускоряют

Еще неплохо бы перед закрытием спрашивать, фэйлов, когда я не сохранил или случайно закрыл окно Кибора, а потом переписывал код, у меня было более 10
(Добавление)
[quote=Kibor]Чем не подходит массив?(для просмотра ссылки Вам необходимо авторизоваться) /quote]Супер! А тот факт, что под изображения выделяется больше места, чем они занимают, не снижает скорость поиска и производительность?
 
 Top
Kibor
Отправлено: 17 Января, 2014 - 11:12:12
Post Id



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


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




По идее можно все изображения загнать вообще в один массив и работая с ними передавать указатель именно на начало изображения в массиве.
Но в этом случае получается проблема в том, что функции работы с массивами изображений изначально рассчитаны что получаемый ими указатель указывает на начало массива. Они в расчетах размера изображения учитываю размер массива и если изображение записать не с начала массива - вылезут за его пределы в расчетах.

Компенсировать это можно довыделив нужное количество памяти как указано в этом примере. dob_memory выделит память сразу после Image и не будет обращений к не выделенной памяти.
Этот метод скорее теоретический чем практический, так как необходимо выделять лишнюю память и довольно запутанный. Просто демонстрируется что указатель может быть не только на начало. Его можно указывать на элемент массива.

Вот код и рис демонстрирующий это.
CODE:
int x[3], y[3];// массив для координат

int Image[150][50];//один массив для всех картинок
loadimage (#Image[0][0], "C:\Image_0.bmp");
loadimage (#Image[50][0], "C:\Image_1.bmp");
loadimage (#Image[100][0], "C:\Image_2.bmp");

int dob_memory[100][50];//Эта память выделяется непосредственно после выделения Image[150][50]
//Что бы не было переполнения переменной Image

int col, ex, ey;
getdisplay(col, ex, ey);


if (findimage(1, #Image[0][0], -1, #x[0], #y[0], 0, 0, ex, ey, -1)==1) mousemove(x[0], y[0]);//Навести мышь на первый рисунок если нашли
sleep(1000);
if (findimage(1, #Image[50][0], -1, #x[1], #y[1], 0, 0, ex, ey, -1)==1) mousemove(x[1], y[1]);//Навести мышь на второй рисунок если нашли
sleep(1000);
if (findimage(1, #Image[100][0], -1, #x[2], #y[2], 0, 0, ex, ey, -1)==1) mousemove(x[2], y[2]);//Навести мышь на третий рисунок если нашли
sleep(1000);
mousemove(x[0], y[0]);
sleep(1000);


Между изображениями в массиве должны оставаться дорожки хотя бы в 1 байт. Это надо для определения размера изображения.



 obm пишет:
По кибору есть практически готовая справка, но к сожалению, она не структурирована

Это самый трудоемкий вопрос в написание программы... Пока надо просто ознакомиться с разделом обновлений. Написание справки очень нудное занятие..

 obm пишет:
А тот факт, что под изображения выделяется больше места, чем они занимают, не снижает скорость поиска и производительность?

Можно смело пренебречь.
Поиск ведется исключительно по массиву изображений.
Размер массивы учитывается только в расчете определения реального размера картинок в массиве и не влияет на скорость поиска.
 
 Top
Страниц (7): « 1 2 [3] 4 5 6 7 »
Сейчас эту тему просматривают: 4 (гостей: 4, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by