Цитата: но хотелось бы именно "середину" знать, чтобы от неё разбежность указывать.
В течении указанного времени в указанных координатах скрипт получает цвета. Потом получает средний цвет и разбежность. Результат выводится в сообщение и записывается в буфер.
CODE:external(INT, "sprintf_s", "sprintf_s", "msvcrt.dll");
char buf[999];
int TimeOut = 3000; // сколько мсек проверять цвет
int PosX = 974; // координата X
int PosY = 530; // координата Y
pause(1000);
int ColorList[999999];
int ColorListCount = 0;
looptime(TimeOut)
{
ColorList[ColorListCount] = getcolor(PosX, PosY);
ColorListCount++;
sleep(10);
}
int Rmax = 0, Rmin = 255;
int Gmax = 0, Gmin = 255;
int Bmax = 0, Bmin = 255;
for(int i=0; i<ColorListCount; i++)
{
int R = rvalue(ColorList[i]);
int G = gvalue(ColorList[i]);
int B = bvalue(ColorList[i]);
if(R > Rmax) Rmax = R;
if(R < Rmin) Rmin = R;
if(G > Gmax) Gmax = G;
if(G < Gmin) Gmin = G;
if(B > Bmax) Bmax = B;
if(B < Bmin) Bmin = B;
}
int Rdev = (Rmax - Rmin) / 2;
int Gdev = (Gmax - Gmin) / 2 ;
int Bdev = (Bmax - Bmin) / 2;
int Rmid = Rmax - Rdev;
int Gmid = Gmax - Gdev;
int Bmid = Bmax - Bdev;
sprintf_s(address(#buf[0]), sizearray(buf), "scanpixel(%d, %d, %d, %d, %d, %d, %d, %d, %d, -1);",
PosX, PosY, rgb(Rmid, Gmid, Bmid), Rdev + 1, Rdev, Gdev + 1, Gdev, Bdev + 1, Bdev);
messagebox(format(#buf[0]));
writeclipboard(format(#buf[0])); (Отредактировано автором: 07 Сентября, 2023 - 04:04:32) |