CODE:int color_text_KIB_5[1]={16777215} // цвет текста
int coord[4]={750, 787, 1171, 839} // зона поиска
int deltaX=46; // расстояние между стрелками
int pause_=50; // пауза между поиском стрелок
loadsymbolbase("C:\Users\Limbaugh\Desktop\Arrows.sib"); // база для readtext
int color_red=2302945; // цвет красной стрелки
int color_red_min=80; // сколько нужно минимум пикселей найти
int r=10; // разбежность
int fcolorX[999], fcolorY[999]; // массивы для findcolor
int script=0, i, posX;
char text_KIB; // сюда распознаётся текст, 1 символ
enabletimer(0);
loop()
{
textbkcolor (65280, 255);
textout(0, 300, 300, "Запуск/остановка скрипта Ctrl+Z", 1);
while(script)
{
textbkcolor (255, 65280);
textout(0, 300, 300, "Скрипт работает", 1);
// ожидание появления стрелок
loop()
{
if(readtext(RU, #text_KIB, 8, 1, -1, -1, -1, #color_text_KIB_5[0], 1, 5, -1, coord[0], coord[1], coord[2], coord[3], -1))
{
if(symbolcorrect(0)>0.7)
{
posX=coord[0]+symbolxpos(0); break;
}
}
sleep(10);
}
/////////
i=0;
while(posX < coord[2]) // пока не проверили все стрелки
{
mousemove(posX, coord[1]); // можно убрать
sleep(pause_); // можно убрать
mousemove(posX+deltaX, coord[3]); // можно убрать
if(readtext(RU, #text_KIB, 8, 1, -1, -1, -1, #color_text_KIB_5[0], 1, 5, -1, posX, coord[1], posX+deltaX, coord[3], -1))
{
func(text_KIB, i); // вызов функции, которая проверяет корректность символа и нажимает клавиши
posX=posX+deltaX; i++; // смещаем область поиска для readtext
sleep(pause_);
}
else break; // если все стрелки нажаты
}
posX=coord[0];
sleep(10);
}
sleep(10);
}
function func(char c, int number)
{
if(symbolcorrect(0)>0.7) // если корректность символа больше 0.7
{
// поиск красных пикселей
int count_red=findcolor(sizearray(fcolorX), #fcolorX[0],#fcolorY[0], posX, coord[1], posX+deltaX, coord[3], color_red, r,r,r,r,r,r, -1);
if(count_red>color_red_min) // если найдено нужное количество красных пикселей
{
textbkcolor (65280, 255);
textout(9, 300, 380, "Красная стрелка", 1);
textbkcolor (255, 65279);
if(c=='п'){textout(10, 300, 400, format(number)+" Влево", 1); key(37); return;}
if(c=='л'){textout(10, 300, 400, format(number)+" Вправо", 1); key(39); return;}
if(c=='н'){textout(10, 300, 400, format(number)+" Вверх", 1); key(38); return;}
if(c=='в'){textout(10, 300, 400, format(number)+" Вниз", 1); key(40); return;}
}
else
{
textbkcolor (255, 16000000);
textout(9, 300, 380, "Синяя стрелка", 1);
textbkcolor (255, 65279);
if(c=='п'){textout(10, 300, 400, format(number)+" Вправо", 1); key(39); return;}
if(c=='л'){textout(10, 300, 400, format(number)+" Влево", 1); key(37); return;}
if(c=='н'){textout(10, 300, 400, format(number)+" Вниз", 1); key(40); return;}
if(c=='в'){textout(10, 300, 400, format(number)+" Вверх", 1); key(38); return;}
}
}
else
{
textbkcolor (255, 0);
textout(9, 300, 380, "Символ не распознан или некорректен", 1);
}
}
CREATE_TIMER(0, 30)
{
if(getkeystate(CONTROL) && getkeystate(90)) // Ctrl+Z включает/выключает
{
while(getkeystate(CONTROL) && getkeystate(90))sleep(10);
if(script)script=0;
else script=1;
}
}