Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 5.27 Функция распознавания текста.

Страниц (30): В начало « ... 9 10 11 12 [13] 14 15 16 17 ... » В конец
 

121. Dantes3000 - 05 Декабря, 2018 - 15:01:35 - перейти к сообщению
Rekkon ,
Искать можно так:

CODE:
string T="asf@!$!@$ asdkjh iasudh asudh a кликнуть лгрфыв!(*выфрв фы в фыв";
string P;
string R="кликну";
int k=regexsearch(1, #P, T, R);

if(k>0) messagebox("Найдено");


CODE:
string Text;
loadsymbolbase ("C:\text_base.sib");
readtext(NUM | RU, #Text, 8, -1, -1, -1, -1, -1, -1, 0, -1, 0, 0, 1920, 1080, -1);


string P;
string R="кликну";
int k=regexsearch(1, #P, Text, R);

if(k>0) messagebox("Найдено");


Но лучше ограничить зону поиска максимально
122. Rekkon - 05 Декабря, 2018 - 15:13:03 - перейти к сообщению
 Dantes3000 пишет:
Rekkon ,

CODE:
string Text;
loadsymbolbase ("C:\text_base.sib");
readtext(NUM | RU, #Text, 8, -1, -1, -1, -1, -1, -1, 0, -1, 0, 0, 1920, 1080, -1);


string P;
string R="кликну";
int k=regexsearch(1, #P, Text, R);

if(k>0) messagebox("Найдено");


Но лучше ограничить зону поиска максимально


1) Зону ограничил, спасибо.
2) Код работает!!! Это просто волшебство Улыбка
3) Но не могу прикрутить код клика ... Чувствую что где-то, что-то упускаю ... прочел форум вдоль и поперек Недовольство, огорчение не получается реализовать.

string Text;
loadsymbolbase ("C:\text_base.sib"Подмигивание;
readtext(NUM | RU, #Text, 8, -1, -1, -1, -1, -1, -1, 0, -1, 0, 0, 1920, 1080, -1);


string P;
string R="кликну";
int k=regexsearch(1, #P, Text, R);

if(k>0) sendmouse(LEFT, symbolxpos(0), symbolypos(0), -1);
123. Dantes3000 - 05 Декабря, 2018 - 15:28:32 - перейти к сообщению
 Rekkon пишет:
0, 0, 1920, 1080

зона так и не ограничена.

Это надо найти какой по счету первый найденный символ слова "кликнуть". Он явно будет нет нулевым symbolxpos(0), symbolypos(0).

делай зону поиска меньше. Желательно прям такую, где это слово должно быть. И тогда кликать просто в эти координаты.
124. konctantin777 - 13 Декабря, 2018 - 22:26:58 - перейти к сообщению
Подскажите что легче для процессора- искать в 10и маленьких окошках(зона поиска) по очереди
readtext (RU | MARK, #Text, 8, 1, -1, -1, -1, -1, -1, 0, -1, 366, 523, 428, 543, w);
или выбрать одно большое и искать среди шумов ?

CODE:
string Text;
loadsymbolbase ("D:\YandexDisk\Bot\GoW\nox,s\Новая база.sib");

loop()
{
readtext (RU | MARK, #Text, 8, 1, -1, -1, -1, -1, -1, 0, -1, 366, 523, 428, 543, w);//Загружаем базу данных
textout(0, symbolxpos(0)+50, symbolypos(0), Text+" ", 0);

if (regexsearch(-1, #Text, Text, "бою")!=0)
{
sendmouse (LEFT, symbolxpos(0)+366-20, symbolypos(0)+523, w);
pause(1000);
}

}
125. Dantes3000 - 14 Декабря, 2018 - 01:06:03 - перейти к сообщению
по очереди
126. Dantes3000 - 07 Января, 2019 - 08:39:23 - перейти к сообщению
Почему loadsymbolbase ничего не возвращает? 1, если загружено, 0 - файл не найден, было бы удобно
127. Kibor - 07 Января, 2019 - 08:43:21 - перейти к сообщению
Возвращает количество символов базы
128. Adomb - 01 Февраля, 2019 - 11:22:17 - перейти к сообщению
Тут такое дело.
Распознавал цифры, убирая пробелы и знаки. Сделал так:

CODE:
char hic[21]; string b="--------------------";
int powers;

function pow()
{
int Color_Text[1]; Color_Text[0]=16777215;
strcpy(#ch[0], b); // удаляю прошлые цифры из hic
if (readtext (NUM | MARK, #hic[0], 12, 3, -1, -1, -1, #Color_Text[0], -1, 1, 70, 529, 236, 727, 263, as)>0)
{
deletetext(#hic[0], " " | "-" ); sleep(10);
powers=formatsn(format(#hic[0]));
}
else return 0;
return powers;
}


Совершенно непонятно почему, то долго работает нормально, то ни с того ни с сего именно на команде readtext Кибор вылетет, без ошибок, без всего.
Запускал заново, начинал отлавливать (при отлове и выяснил, что вылетает на readtext) - первый раз функция срабатывает, текст распознаётся, а при втором обращении вылетает.
Вот хоть убейся. Через некоторое время опять начинает работать.

Попробовал так - вынес strcpy из функции.

CODE:
char hic[21]; string b="zzzzzzzzzzzzzzzzzzzz"; strcpy(#hic[0], b);
int powers;

function pow()
{
int Color_Text[1];
Color_Text[0]=16777215;
// удаляю прошлые цифры из hic
deletetext(#hic[0], "0 " | "1" | "2" | "3 " | "4" | "5" | "6 " | "7" | "8" | "9" | "z" ); sleep(10);
if (readtext (NUM | MARK, #hic[0], 12, 3, -1, -1, -1, #Color_Text[0], -1, 1, 70, 529, 236, 727, 263, as)>0)
{
deletetext(#hic[0], " " | "-" ); sleep(10);
powers=formatsn(format(#hic[0])); //messagebox(powers);
}
else return 0;
return powers;
}


- вылеты пропали сразу и второй день всё ок. Почему?
129. Kibor - 01 Февраля, 2019 - 11:26:58 - перейти к сообщению
strcpy(#ch[0], b); // удаляю прошлые цифры из hic
?
130. Adomb - 01 Февраля, 2019 - 11:30:37 - перейти к сообщению
 Kibor пишет:
strcpy(#ch[0], b); // удаляю прошлые цифры из hic
?

Просто я не разобрался как char работает. В него могли 7 цифр записаться, а при следующем обращении - 5 цифр. Я так подумал, что 2 последние цифры в char могли остаться, поэтому очищал его перед readtext. Неправильно делаю?

Powered by ExBB FM 1.0 Final