1. resident - 06 Сентября, 2023 - 11:08:46 - перейти к сообщению
Есть переливающаяся кнопка. Определяю кнопку по пикселю определенного цвета с разбежностью. Хочу ткнуть в определенный пиксель, включить потоковое обновление и получить готовый код scanpixel, где будут координаты этого пикселя, какой-то средний искомый цвет и разбежность за время динамического обновления.
2. Kibor - 06 Сентября, 2023 - 11:18:42 - перейти к сообщению
Хорошее предложение.
Генерируйте еще.
Всё генерируйте которые хочется.
Обязательно заточу программу под всех, когда будет время.
Разбежность во время проверки динамики вы можете указать в графическом редакторе. И увидеть как будет программа видеть.
Ее используйте.
Или заточить именно под scanpixel?
Генерируйте еще.
Всё генерируйте которые хочется.
Обязательно заточу программу под всех, когда будет время.
Разбежность во время проверки динамики вы можете указать в графическом редакторе. И увидеть как будет программа видеть.
Ее используйте.
Или заточить именно под scanpixel?
3. resident - 06 Сентября, 2023 - 11:46:40 - перейти к сообщению
Kibor пишет:
Разбежность во время проверки динамики вы можете указать в графическом редакторе. И увидеть как будет программа видеть.
Ее используйте.
Или заточить именно под scanpixel?
Это не даёт мне никаких данных, а мне нужен цвет с минимально возможной разбежностью, который может быть в этой точке. Сейчас беру цвет в случайный момент времени и ставлю разбежность с потолка, одинаковую по всем компонентам цвета
4. konctantin777 - 06 Сентября, 2023 - 12:20:04 - перейти к сообщению
resident пишет:
нужен цвет с минимально возможной разбежностью, который может быть в этой точке
+
5. Kibor - 06 Сентября, 2023 - 12:54:54 - перейти к сообщению
resident пишет:
Это не даёт мне никаких данных, а мне нужен цвет с минимально возможной разбежностью
Включаете фильтр динамики и подбираете параметр разбежности пока этот пиксель не будет окрашиваться красным. Это и есть эти данные.
6. konctantin777 - 06 Сентября, 2023 - 12:56:44 - перейти к сообщению
Это да, но хотелось бы именно "середину" знать, чтобы от неё разбежность указывать.
7. Zireael - 06 Сентября, 2023 - 20:04:03 - перейти к сообщению
Цитата:
но хотелось бы именно "середину" знать, чтобы от неё разбежность указывать.
В течении указанного времени в указанных координатах скрипт получает цвета. Потом получает средний цвет и разбежность. Результат выводится в сообщение и записывается в буфер.
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]));
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]));
8. konctantin777 - 07 Сентября, 2023 - 00:53:36 - перейти к сообщению
Спасибо )
9. resident - 25 Октября, 2023 - 04:54:45 - перейти к сообщению
CODE:
if(scanpixel(798, 571, 67533, 30, 30, 30, 30, 30, 30, w)) { // реклама
clc(798,571,"реклама на оперативника");
continue;
} else {
colorvs(getcolor(798, 571,w),67533);
}
clc(798,571,"реклама на оперативника");
continue;
} else {
colorvs(getcolor(798, 571,w),67533);
}
условие не выполнилось, проверяю какой цвет был по указанным координатам - по условию проходит.
col1: 725448 200,17,11
col2: 67533 205,7,1
Хочу знать какой цвет был scanpixel. В какую-то системную переменную или в отладчик.
Да, можно записывать скрин в двухмерный массив и оттуда брать значение.