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

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

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

> Описание: После блока распознавания нужно ввести текст, полученный с помощью распознавания текста
Kostick
Отправлено: 01 Декабря, 2021 - 21:06:38
Post Id



Пользователь
Мастер


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




Я не умею программировать, но визуальный редактор спасает.
В игре Black Desert есть рыбалка. Нужно Нажать Space, чтобы закинуть удочку, потом дождать клева и снова нажать Space, чтобы подсечь. Появится полоса ловли. Когда она будет в синей зоне, нужно снова нажать Space. После появится капча: нужно ввести рандомную последовательность из клавиш W, A, S, D. Я смог дойти до капчи, т.е. все нажатия Space kibor выполняет, но дальше нужно прожать клавиши из капчи.
Например, на данном скриншоте надо ввести wwaads.
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Т.е. кибор распознает текст из определенной области [667, 493, 1227, 623].
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Т.к. кроме нужных символов есть лишние из-за стрелок под буквами того же цвета, нужно провести корректность распознавания. Окно распознавания текста выглядит так:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Я знаю, что в блок кода нужно примерно ввести вот это:
 Цитата:
char A[300];
int kml=0;
int nkml;
int kor=0;

for (int n=0; n<aw; n++) // Перебираем посимвольно
{
if (c_text[n]!=' ' && symbolcorrect(kor)>0.45) // если корректность более 0.45
{
A[kml]=c_text[n]; // Сохраним символ
kml++;
key(c_text[n]); // нажми распознанный символ, у которого корректность больше 0.45
pause(100); // пауза 100 мс
}
kor++;
}

A[kml]=0;

Его я использовал в прошлом боте год назад, но бот перестал работать, и за этот год визуальный редактор теперь не открывает файлы расширения ".vc", которое было год назад. Вот так выглядел код в визуальном редакторе тогда:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Таймер был нужен, чтобы прожимать свитки на бафы на клавиши 2 и 5, но его я пока не вставлял.
Теперь при добавлении этого кода выдает ошибку:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Не могу понять, как в блоке распознавания текста в новом визуальном редакторе называется массив после корректного распознавания и не перекликаются ли другие переменные этого отрывка с остальным кодом. Подскажите пожалуйста,
Прилагаю архив файлов визуального редактора, базу для распознавания текста, код для кибора и изображения, необходимые для блока распознавания изображения. Плюс код прошлогоднего бота.
Ссылка на архив
*Необходима расширенная версия для запуска кода, т.к. в коде задействуется функция распознавание текста*

(Отредактировано автором: 01 Декабря, 2021 - 21:09:51)

 
 Top
konctantin777
Отправлено: 01 Декабря, 2021 - 21:31:51
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1152
Дата рег-ции: Окт. 2017  
Откуда: Архангельск
Репутация: 6




Если распознавать только буквы без знаков ?
 
 Top
Kostick
Отправлено: 01 Декабря, 2021 - 22:11:20
Post Id



Пользователь
Мастер


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




 konctantin777 пишет:
Если распознавать только буквы без знаков ?

Да, только английские буквы

(Отредактировано автором: 01 Декабря, 2021 - 22:11:55)

 
 Top
Ilya001
Отправлено: 01 Декабря, 2021 - 23:25:48
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 459
Дата рег-ции: Май 2020  
Репутация: 23




 Цитата:
for (int n=0; n<aw; n++)

А где этот переменный aw? Что в нём храниться?
 
 Top
Kostick
Отправлено: 01 Декабря, 2021 - 23:51:19
Post Id



Пользователь
Мастер


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




 Ilya001 пишет:
 Цитата:
for (int n=0; n<aw; n++)

А где этот переменный aw? Что в нём храниться?

Нашел в коде прошлого бота. Это переменная на количество символов. Я пропустил, сейчас попробую с ней вот так, спасибо.
CODE:
char c_Text_S[100]; // В этот массив запишем текст весь
int aw=size(Text_S); // Узнаем кол-во символов

strcpy(#c_Text_S[0], Text_S); // Скопируем текст с string в массив char

char A[300];
int kml=0;
int nkml;
int kor=0;

for (int n=0; n<aw; n++) // Перебираем посимвольно
{
if (c_Text_S[n]!=' ' && symbolcorrect(kor)>0.45) // если корректность более 0.45
{
A[kml]=c_Text_S[n]; // Сохраним символ
kml++;
key(c_Text_S[n]); // нажми распознанный символ, у которого корректность больше 0.45
pause(100); // пауза 100 мс
}
kor++;
}

A[kml]=0;

(Добавление)
 Kostick пишет:
 Ilya001 пишет:
 Цитата:
for (int n=0; n<aw; n++)

А где этот переменный aw? Что в нём храниться?

Нашел в коде прошлого бота. Это переменная на количество символов. Я пропустил, сейчас попробую с ней вот так, спасибо.
CODE:
char c_Text_S[100]; // В этот массив запишем текст весь
int aw=size(Text_S); // Узнаем кол-во символов

strcpy(#c_Text_S[0], Text_S); // Скопируем текст с string в массив char

char A[300];
int kml=0;
int nkml;
int kor=0;

for (int n=0; n<aw; n++) // Перебираем посимвольно
{
if (c_Text_S[n]!=' ' && symbolcorrect(kor)>0.45) // если корректность более 0.45
{
A[kml]=c_Text_S[n]; // Сохраним символ
kml++;
key(c_Text_S[n]); // нажми распознанный символ, у которого корректность больше 0.45
pause(100); // пауза 100 мс
}
kor++;
}

A[kml]=0;

Так, он начал писать, но не те клавиши. Как посмотреть, какие он нажимает клавиши, например, вывести сообщение на экран через команду messangebox? Просто что нужно туда вписать?
Когда вставляю
CODE:
messagebox(c_Text_S[n]);

выводит пустое сообщение.

(Отредактировано автором: 01 Декабря, 2021 - 23:59:46)

 
 Top
Ilya001
Отправлено: 02 Декабря, 2021 - 11:41:20
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 459
Дата рег-ции: Май 2020  
Репутация: 23




Вот такой код у меня работает:
CODE:
char C_Text[100];
string Text;

loadsymbolbase (*/Путь к вашей базе/*);

read(); // вызов функции OCR для распознавания текста
beep(700, 200); // просто сигнал об успешной работе
perebor(); // тут перебор


function read()
{
pause(1000);
readtext (RU, #Text, 13, 1, -1, -1, -1, -1, -1, 0, -1, 29, 316, 384, 352, -1);
//messagebox (Text);
//regexreplace(-1, #Text, Text, " ", ""); этого можно не использовать, оно пробелы убирает просто
strcpy(#C_Text[0], Text);
}

function perebor()
{
int aw=size(Text);
for (int n=0; n<aw; n++)
{
key(C_Text[n]);
//messagebox(C_Text[n]);
sleep(200);
}
}

(Добавление)
Для визуального редактора:
https://ibb.co/mqwKwhR
(Добавление)
[quote=Ilya001]Для визуального редактора:(для просмотра ссылки Вам необходимо авторизоваться) /quote]
(Добавление)
[youtube=Пример работы кода](для просмотра ссылки Вам необходимо авторизоваться) /youtube]
Это просто пример, если что-то не правильно работает, проверяйте хорошо ли распознаются тексты.

(Отредактировано автором: 02 Декабря, 2021 - 11:42:42)

 
 Top
Kostick
Отправлено: 02 Декабря, 2021 - 13:50:47
Post Id



Пользователь
Мастер


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




[quote=Ilya001]Вот такой код у меня работает:
CODE:
char C_Text[100];
string Text;

loadsymbolbase (*/Путь к вашей базе/*);

read(); // вызов функции OCR для распознавания текста
beep(700, 200); // просто сигнал об успешной работе
perebor(); // тут перебор


function read()
{
pause(1000);
readtext (RU, #Text, 13, 1, -1, -1, -1, -1, -1, 0, -1, 29, 316, 384, 352, -1);
//messagebox (Text);
//regexreplace(-1, #Text, Text, " ", ""); этого можно не использовать, оно пробелы убирает просто
strcpy(#C_Text[0], Text);
}

function perebor()
{
int aw=size(Text);
for (int n=0; n<aw; n++)
{
key(C_Text[n]);
//messagebox(C_Text[n]);
sleep(200);
}
}

(Добавление)
Для визуального редактора:
https://ibb.co/mqwKwhR
(Добавление)
 Ilya001 пишет:
Для визуального редактора:(для просмотра ссылки Вам необходимо авторизоваться) /quote]
(Добавление)
[youtube=Пример работы кода](для просмотра ссылки Вам необходимо авторизоваться) /youtube]
Это просто пример, если что-то не правильно работает, проверяйте хорошо ли распознаются тексты.

Хорошо, это сработало. Но как добавить функцию symbolcorrect в этот цикл? Потому что кроме нужных символов имеются просто точки
Что пишет:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Что видит:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
(Добавление)
[quote=Kostick]
 Ilya001 пишет:
Вот такой код у меня работает:
CODE:
char C_Text[100];
string Text;

loadsymbolbase (*/Путь к вашей базе/*);

read(); // вызов функции OCR для распознавания текста
beep(700, 200); // просто сигнал об успешной работе
perebor(); // тут перебор


function read()
{
pause(1000);
readtext (RU, #Text, 13, 1, -1, -1, -1, -1, -1, 0, -1, 29, 316, 384, 352, -1);
//messagebox (Text);
//regexreplace(-1, #Text, Text, " ", ""); этого можно не использовать, оно пробелы убирает просто
strcpy(#C_Text[0], Text);
}

function perebor()
{
int aw=size(Text);
for (int n=0; n<aw; n++)
{
key(C_Text[n]);
//messagebox(C_Text[n]);
sleep(200);
}
}

(Добавление)
Для визуального редактора:
https://ibb.co/mqwKwhR
(Добавление)
 Ilya001 пишет:
Для визуального редактора:(для просмотра ссылки Вам необходимо авторизоваться) /quote]
(Добавление)
[youtube=Пример работы кода](для просмотра ссылки Вам необходимо авторизоваться) /youtube]
Это просто пример, если что-то не правильно работает, проверяйте хорошо ли распознаются тексты.

Хорошо, это сработало. Но как добавить функцию symbolcorrect в этот цикл? Потому что кроме нужных символов имеются просто точки
Что пишет:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Что видит:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]

А, кажется получилось. Сделал так:
CODE:
char c_Text[100];
strcpy(#c_Text[0], Text_S);

int aw=size(Text_S);
int kor=0;

for (int n=0; n<aw; n++)
{
if (c_Text[n]!=' ' && symbolcorrect(kor)>0.45)
{
key(c_Text[n]);
sleep(200);
}
kor++
}
 
 Top
Ilya001
Отправлено: 02 Декабря, 2021 - 14:39:53
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 459
Дата рег-ции: Май 2020  
Репутация: 23




[quote=Kostick](для просмотра ссылки Вам необходимо авторизоваться) /quote]от лишнего шума можно избавиться и вот так: youtube.com/watch?v=jgmTeEpcIVg

(Отредактировано автором: 02 Декабря, 2021 - 14:40:38)

 
 Top
Kostick
Отправлено: 02 Декабря, 2021 - 15:29:13
Post Id



Пользователь
Мастер


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




[quote=Ilya001]
 Kostick пишет:
(для просмотра ссылки Вам необходимо авторизоваться) /quote]от лишнего шума можно избавиться и вот так: youtube.com/watch?v=jgmTeEpcIVg

К сожалению не получится. Уже пробовал. Тут несколько факторов:
Во-первых: Окно с капчей почему-то всегда появляется с небольшим сдвигом в рандомном направлении, поэтому когда забивается такая маленькая область распознавания, то буквы бывают обрезанными;
Получается вот так:
Когда я выбираю такую область:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
То следующая капча уже такая:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Во-вторых: цвет букв тоже рандомный от серого до ярко-красного, отчего придется забивать каждый цвет отдельно (что я уже пробовал). Экспериментировал с разбежностью, но все равно вышло чуть больше 40 цветов, а потом я не помню, или я забил, или кибор стал виснуть.
 
 Top
Ilya001
Отправлено: 02 Декабря, 2021 - 15:36:57
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 459
Дата рег-ции: Май 2020  
Репутация: 23




 Kostick пишет:
То следующая капча уже такая:

тогда вам нужно сделать поиск какой то части этого капчи(через findimage к примеру), а потом относительно него распознавать текст, тогда не будет такого

(Отредактировано автором: 02 Декабря, 2021 - 15:37:28)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 4 (гостей: 4, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by