ivantu |
Отправлено: 12 Ноября, 2018 - 15:21:01
|
Эксперт
Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013
Репутация: 14
|
Друзья, есть у кого то идеи? Заметил что это все появляется при злоупотреблением распознаванием текста. Пишу бота полностью через распознавание текста
КОД (Отобразить)
CODE:
win wind=window ("BlueStacks Android PluginAndroid", -1, window ("BlueStacks", -1, -1));
string Text, Text2, Text3, skip_world_boss = "";
string ok, drop_window, drop_rune, sell_rune;
int start_status=0; // Начало боя
loadsymbolbase (pathfolder()+"\images\sw_base.sib" );
#include "F:\Soft\Kibor\images\d_logs.txt"
#include "F:\Soft\Kibor\images\d_main.txt"
string s="", PR, rn=formatic(13)+formatic(10);
int log_z=0;
int max_string=15; // максимальное количество строк лога, лишние будут удалены начиная с начала
enabletimer(0);//включаем таймер для обработки сообщений от диалога
enabletimer(1);//включаем таймер для обработки сообщений от диалога
while(start_status==0)sleep(100);
loop()
{
start_battle(); // Начать бой
auto_battle(); // Авто бой включить
repeat_battle(); // Повтор Боя
victory_battle(); // Победа
take_drop(); // Забираем Дроп
world_boss(); // Нажать SKIP WorldBoss
sleep(50);
}
//Повтор Боя
function repeat_battle(){
readtext (RU | MARK, #Text, 2, 1, -1, -1, -1, -1, -1, 0, -1, 184, 231, 299, 262, wind);
if (Text == "повторить" ) {
sendmouse(LEFT, 184+symbolxpos(0)+rand(5, 5), 231+symbolypos(0)-rand(5, 5), wind);
sleep(300);
text_static0[0]=add_string("Нажали повтор боя");
sleep(2000);
//textout(0, 100, 50, "Нажали повтор", 0);
}}
//Начать бой
function start_battle(){
int Color_Text[4];
Color_Text[0]=7049370; Color_Text[1]=6983577; Color_Text[2]=10673644; Color_Text[3]=9355470;
readtext (RU | MARK, #Text, 3, 1, -1, -1, -1, #Color_Text[0], 1, 38, 0, 659, 326, 721, 350, wind);
if (Text == "в бой" ) {
sendmouse(LEFT, 659+symbolxpos(0)+rand(5, 5), 326+symbolypos(0)-rand(5, 5), wind);
sleep(300);
text_static0[0]=add_string("Нажали В бой");
sleep(2000);
}}
//Авто бой включить
function auto_battle(){
readtext (RU | MARK, #Text, 8, 1, -1, -1, -1, -1, -1, 0, -1, 123, 403, 179, 454, wind);
if (Text == "+" ) {
sendmouse(LEFT, 123+symbolxpos(0)+rand(5, 5), 403+symbolypos(0)-rand(5, 5), wind);
sleep(300);
text_static0[0]=add_string("Включили Автобой");
sleep(2000);
}}
//Победа
function victory_battle(){
readtext (EN | MARK, #Text, 8, 1, -1, -1, -1, -1, -1, 0, -1, 492, 54, 534, 95, wind); // у
//messagebox(Text);
readtext (RU | EN | MARK, #Text2, 8, 1, -1, -1, -1, -1, -1, 0, -1, 359, 149, 458, 180, wind); // награда
int Color_Text[5];
Color_Text[0]=13596683; Color_Text[1]=16303202; Color_Text[2]=15771406; Color_Text[3]=11369489; Color_Text[4]=15705611;
readtext (MARK, #Text3, 33, -1, -1, -1, -1, #Color_Text[0], 1, 136, -1, 194, 210, 229, 251, wind);
take_drop(); // ...
//messagebox(Text+ Text2+ Text3);
if (Text == "y" && Text2 == "награда" && drop_window != "?") {
sendmouse(LEFT, 359+symbolxpos(0)+rand(5, 5), 149+symbolypos(0)-rand(5, 5), wind);
sleep(300);
text_static0[0]=add_string("Победа нажали в центр");
sleep(2000);
}
//messagebox (Text+ Text2+ Text3 );
if (Text == "y" && Text2 != "награда" && Text3 == "." ) {
sendmouse(LEFT, 359+symbolxpos(0)+rand(5, 5), 149+symbolypos(0)-rand(5, 5), wind);
sleep(300);
text_static0[0]=add_string("Победа открыли сундук");
sleep(2000);
take_drop();
}}
//Забираем Дроп
function take_drop()
{
int Color_Text[10];
Color_Text[0]=4164535; Color_Text[1]=3572142; Color_Text[2]=3044776; Color_Text[3]=2518690; Color_Text[4]=4494267; Color_Text[5]=3440300; Color_Text[6]=3770034; Color_Text[7]=2847396; Color_Text[8]=4427962; Color_Text[9]=3242666;
readtext (MARK, #drop_window, 8, 1, -1, -1, -1, #Color_Text[0], 1, 2, -1, 521, 98, 580, 170, wind);
//messagebox(drop_window);
while (drop_window =="?"){
text_static0[0]=add_string("Найдено окно дропа");
sleep(1000);
//messagebox("Цикл дропа");
drop_any();
drop_runes();
Color_Text[0]=3572142; Color_Text[1]=3044776; Color_Text[2]=2386590; Color_Text[3]=4296376; Color_Text[4]=3967156; Color_Text[5]=3374508; Color_Text[6]=2715810; Color_Text[7]=4560060; Color_Text[8]=2253458; Color_Text[9]=2123160;
readtext (RU | MARK, #Text, 10, 1, -1, -1, -1, #Color_Text[0], 1, 5, -1, 530, 105, 570, 143, wind);
}
}
function drop_runes()
{
readtext (RU, #drop_rune, 4, -1, -1, -1, -1, -1, -1, 0, 50, 264, 294, 324, 320, wind);
if (drop_rune == "набор"){
text_static0[0]=add_string("Выпала руна");
sleep(1000);
int Color_Text[4];
Color_Text[0]=9488858; Color_Text[1]=9093844; Color_Text[2]=7645628; Color_Text[3]=10739437;
readtext (RU, #sell_rune, 2, -1, -1, -1, -1, #Color_Text[0], 1, 11, 50, 301, 348, 381, 372, wind);
if (sell_rune == "продать") {
sendmouse(LEFT, 301+symbolxpos(0)+rand(5, 5), 348+symbolypos(0)-rand(5, 5), wind);
text_static0[0]=add_string("Нажали продать :) ");
sleep(2000);
}
}
drop_window = "";
}
function drop_any()
{
int Color_Text[1];
Color_Text[0]=10607852;
readtext (RU, #ok, 2, -1, -1, -1, -1, #Color_Text[0], 1, 11, 50, 350, 325, 465, 425, wind);
//messagebox(ok);
if (ok == "ок"){
sendmouse(LEFT, 350+symbolxpos(0)+rand(5, 5), 325+symbolypos(0)-rand(5, 5), wind);
sleep(300);
text_static0[0]=add_string("Выпал хлам");
sleep(2000);
drop_window = "";
}
}
function world_boss()
{
readtext (EN, #skip_world_boss, 8, 1, -1, -1, -1, -1, -1, 0, -1, 738, 434, 784, 455, wind);
if (skip_world_boss == "skip"){
sendmouse(LEFT, 738+symbolxpos(0)+rand(5, 5), 434+symbolypos(0)-rand(5, 5), wind);
sleep(50);
}
}
CREATE_TIMER(0, 50)//выполнение таймера через 50 мсек.
{
start_button:;
//textout(1,100,50, format(start_status), 1);
if (flag_button0[0]>0)
{
main_text_static0[1]="работает";
flag_button0[0]=0;
if (start_status==1)start_status=0;
else {start_status=1; text_button0[0]="Стоп"; }
}
if(start_status==0){sleep(100); text_button0[0]="Старт";
main_text_static0[1]="не работает"; goto start_button;}
}
CREATE_TIMER(1, 50)//выполнение таймера через 50 мсек.
{
if (flag_button0[2]>0)
{
showdialog(1, "Последние действия", 526, 218, 250, 400, 0, 1);
//messagebox("открыты логи");
flag_button0[2] = 0;
}
}
/*LOGS*/
function add_string(string temp)
{
log_z++; s=s+temp+rn;
if(log_z>max_string) // если достигнут максимум строк в логе
{
if(findtexttest (#s, #PR, rn, /[RU, EN, SPACE, NUM, SPEC, MARK]+\)==1)s=PR; // ищем всё что идет после переноса строки
else {if(findtexttest (#s, #PR, rn, /[RU, EN, SPACE, NUM, SPEC, MARK]+\)==1)s=PR;} // обход бага, повторный вызов функции
}
return s;
}
(Отредактировано автором: 12 Ноября, 2018 - 15:22:10) |
|
|
Zireael |
Отправлено: 13 Ноября, 2018 - 03:21:54
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Первым делом заменить это:
CODE:/*LOGS*/
function add_string(string temp)
{
log_z++; s=s+temp+rn;
if(log_z>max_string) // если достигнут максимум строк в логе
{
if(findtexttest (#s, #PR, rn, /[RU, EN, SPACE, NUM, SPEC, MARK]+\)==1)s=PR; // ищем всё что идет после переноса строки
else {if(findtexttest (#s, #PR, rn, /[RU, EN, SPACE, NUM, SPEC, MARK]+\)==1)s=PR;} // обход бага, повторный вызов функции
}
return s;
}
На это:
CODE:function add_string(string temp)
{
log_z++; s=s+temp+rn;
if(log_z>max_string) // если достигнут максимум строк в логе
{
regexsearch(1, #s, s, "(?<=\r\n).*", SINGLELINE);
}
return s;
}
Функция findtexttest была тестовая и с багами, так что возможно из неё вылеты. По сути она уже не актуальна. |
|
|
ivantu |
Отправлено: 13 Ноября, 2018 - 08:08:45
|
Эксперт
Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013
Репутация: 14
|
Zireael пишет: Функция findtexttest была тестовая и с багами, так что возможно из неё вылеты. По сути она уже не актуальна.
Вы правы! Я вчера весь вечер код перебирал, и нашел, действительно дело в этом участке кода, иду на работу , думаю с утра напишу, попрошу помощи, как подправить этот участок кода, чтобы работало как нужно, открываю форум уже написали подсказку, это круто, сейчас протестирую, пропадет ли ошибка, за которой кибор автоматом закрывается без предупреждений )
(Добавление)
P/S Определил вылет программы, когда достигнуто максимальное количество
если пишу вместо 15, к примеру 6 вылетов не наблюдается... в чем может быть проблема?
(Отредактировано автором: 13 Ноября, 2018 - 08:24:49) |
|
|
|