Цитата:
Вот снял короткое видео на котором показано как использовать фильтр динамики для этого.
Осваивайте инструментарий Кибор. Все это делается за минуты.
Осваивайте инструментарий Кибор. Все это делается за минуты.
Я попробовал, проблема осталась, т.к. основная задача, не найти кнопку, а определить её состояние: вкл/выкл и если вкл, то выключить её, при том что кнопка полупрозрачная и фон меняется.
Появилась другая идея.
CODE:
int getc1, getc2, gcol1, gcol2, fp1=0, dif1, ob1, obcol1[3];
int getc3, getc4, gcol3, gcol4, fp2=0, dif2, ob2, obcol2[3];
int time1, time2, time3, time4, rzb1=20, rzb2==20;
int x1=799, y1=607, x2=850, y2=607;
starting:
pause(100);
//ñìîòðèì êàêîé öâåò ôîíà
getc1=getcolor(x1,y1);//ñìîòðèì öâåò íà êíîïêå
ob1=getcolor(799,593);
obcol1[0]=rvalue(ob1);
obcol1[1]=gvalue(ob1);
obcol1[2]=bvalue(ob1);
if (obcol1[0]>70) {gcol1=bvalue(getc1);}
else {gcol1=gvalue(getc1);}
//ñìîòðèì êàêîé öâåò ôîíà
getc3=getcolor(x2,y2);
ob2=getcolor(850,593);
obcol2[0]=rvalue(ob2);
obcol2[2]=gvalue(ob2);
obcol2[1]=bvalue(ob2);
if (obcol2[0]>70) {gcol3=bvalue(getc3);}
else {gcol3=gvalue(getc3);}
time1=gettime();
time2=time1;
a: if (time2-time1<4000){time2=gettime();
getc2=getcolor(x1,y1);
if (obcol2[0]>70) {gcol2=bvalue(getc2);}
else {gcol2=gvalue(getc2);}
dif1=gcol2-gcol1;
if ((dif1>rzb1||dif1<-1*rzb1)&&dif1!=0)
{fp1=1;textout(6, 799, 728, format(dif1), 1);}
textout(1, x1, y1+1, format(fp1), 1);
textout(2, 799, 628, format(getc2), 1);
textout(3, 799, 688, format(gcol1), 1);
textout(5, 799, 708, format(gcol2), 1);
if (dif1>20) textout(50, 799, 788, format(dif1), 1);
if (dif1<20) textout(51, 799, 808, format(dif1), 1);
getc4=getcolor(x2,y2);
if (obcol2[0]>70) {gcol4=bvalue(getc4);}
else {gcol4=gvalue(getc4);}
dif2=gcol4-gcol3;
if ((dif2>rzb2||dif2<-1*rzb2)&&dif2!=0)
{fp2=1; textout(14, 850, 728, format(gcol4-gcol3), 1);}
textout(10, x2, y2+1, format(fp2), 1);
textout(11, 850, 628, format(getc4), 1);
textout(12, 850, 688, format(gcol3), 1);
textout(13, 850, 708, format(gcol4), 1);
pause(10);
goto a;
}
if (fp1==1)
{textout(7, 799, 550, "Migaet", 1); fp1=0;
//mousemove(x1, y1);
//pause(100); mouse(LEFT, x1, y1);pause(100); mousemove(x1, y1-80);
pause(100);}
else {textout(7, 799, 550, "Ne migaet", 1);}
if (fp2==1)
{textout(8, 850, 550, "Migaet", 1); fp2=0;
//mousemove(x2, y2);
//pause(100); mouse(LEFT, x2, y2);pause(100); mousemove(x2, y2-80);
pause(100);}
else {textout(8, 850, 550, "Ne migaet", 1);}
goto starting;
int getc3, getc4, gcol3, gcol4, fp2=0, dif2, ob2, obcol2[3];
int time1, time2, time3, time4, rzb1=20, rzb2==20;
int x1=799, y1=607, x2=850, y2=607;
starting:
pause(100);
//ñìîòðèì êàêîé öâåò ôîíà
getc1=getcolor(x1,y1);//ñìîòðèì öâåò íà êíîïêå
ob1=getcolor(799,593);
obcol1[0]=rvalue(ob1);
obcol1[1]=gvalue(ob1);
obcol1[2]=bvalue(ob1);
if (obcol1[0]>70) {gcol1=bvalue(getc1);}
else {gcol1=gvalue(getc1);}
//ñìîòðèì êàêîé öâåò ôîíà
getc3=getcolor(x2,y2);
ob2=getcolor(850,593);
obcol2[0]=rvalue(ob2);
obcol2[2]=gvalue(ob2);
obcol2[1]=bvalue(ob2);
if (obcol2[0]>70) {gcol3=bvalue(getc3);}
else {gcol3=gvalue(getc3);}
time1=gettime();
time2=time1;
a: if (time2-time1<4000){time2=gettime();
getc2=getcolor(x1,y1);
if (obcol2[0]>70) {gcol2=bvalue(getc2);}
else {gcol2=gvalue(getc2);}
dif1=gcol2-gcol1;
if ((dif1>rzb1||dif1<-1*rzb1)&&dif1!=0)
{fp1=1;textout(6, 799, 728, format(dif1), 1);}
textout(1, x1, y1+1, format(fp1), 1);
textout(2, 799, 628, format(getc2), 1);
textout(3, 799, 688, format(gcol1), 1);
textout(5, 799, 708, format(gcol2), 1);
if (dif1>20) textout(50, 799, 788, format(dif1), 1);
if (dif1<20) textout(51, 799, 808, format(dif1), 1);
getc4=getcolor(x2,y2);
if (obcol2[0]>70) {gcol4=bvalue(getc4);}
else {gcol4=gvalue(getc4);}
dif2=gcol4-gcol3;
if ((dif2>rzb2||dif2<-1*rzb2)&&dif2!=0)
{fp2=1; textout(14, 850, 728, format(gcol4-gcol3), 1);}
textout(10, x2, y2+1, format(fp2), 1);
textout(11, 850, 628, format(getc4), 1);
textout(12, 850, 688, format(gcol3), 1);
textout(13, 850, 708, format(gcol4), 1);
pause(10);
goto a;
}
if (fp1==1)
{textout(7, 799, 550, "Migaet", 1); fp1=0;
//mousemove(x1, y1);
//pause(100); mouse(LEFT, x1, y1);pause(100); mousemove(x1, y1-80);
pause(100);}
else {textout(7, 799, 550, "Ne migaet", 1);}
if (fp2==1)
{textout(8, 850, 550, "Migaet", 1); fp2=0;
//mousemove(x2, y2);
//pause(100); mouse(LEFT, x2, y2);pause(100); mousemove(x2, y2-80);
pause(100);}
else {textout(8, 850, 550, "Ne migaet", 1);}
goto starting;
Свою задачу он выполняет, но есть момент, который меня просто вымораживает и я хочу его устранить.
Суть кода такая: запоминаем начальные состояния 2ух соседних кнопок(по 1му пикселу на кнопку), запускаем таймер и внутри него спамим и запоминаем гетколор для каждой кнопки(по очереди), затем получаем разницу полученного ранее и полученного внутри таймера, если разница превышает определённое значение, то кнопка мигает и выводим на дисплей "1", если разница = 0, то выводим "0". Как я уже сказал, механизм работает, но есть нюанс... почему то первая кнопка постоянно проседает, в том плане, что даже если она мигает у неё проскакивает периодически 0(в показаниях), при том, что разница не нулевая(чисто визуально, по бегающим цифрам ), а вот вторая кнопка работает идеально. даёт только "1", когда мигает и "0", когда выключена. Пробовал, менять положение камеры, чтобы цвет фона был другим, менял блоки кнопок местами, из второй кнопки(работает идеально) делал первую. Результат, один - в кнопку 1 проскакивает "0".
Помогите найти ошибку.