Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (9): « 1 [2] 3 4 5 6 7 8 9 »   

> Описание: Справка по некоторым функциям Кибор
Kibor
Отправлено: 27 Марта, 2020 - 13:39:37
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Загрузка и работа с картинками.

Для сканирования и поиска конкретных изображений на экране, окне или игре мы должны задать программе что именно она должна искать (о поиске в следующей статье).

Тут я опишу загрузку изображений с .bmp файлов в память программы и работу с ними. Как создавать эти файлы я тоже опишу позже.

Загрузка .bmp осуществляется функцией loadimage. Картинки хранятся в программе в двухмерных масивах int:
loadimage(#image[0][0], "путь в файлу .bmp");
Можно загружать файлы JPG и PNG (не использовать для поиска). Для этого надо указать в первом параметре тип файла:
loadimage (JPG, #Image_0[0][0], "путь в файлу.jpg");
loadimage (PNG, #Image_0[0][0], "путь в файлу.png");
Певый параметр - указатель на двухмерный масив int
Второй - string, путь к файлу.
Размер масива должен быть больше или равен размеру загружаемого изображения. Певый столбец X, второй Y. Старт с левого верхнего угла.
То есть в image[0][0] находится цвет самого левого верхнего пикселя картики, в image[1][0] цвет второго по горизонтали пикселя и т.д.

Пример:
int Image[70][90];
loadimage (#Image[0][0], "C:\Image.bmp");

В данном случае мы загружаем файл Image.bmp в масив Image[70][90]. Размер картинки не должен быть больше 70 на 90.
Размер масива может быть больше размера картинки. К примеру int Image[250][300] для картинки 100 на 200. Ошибки не будет и все функции будут прекрасно работать с этой картинкой в этом масиве. Просто неиспользумая память заполнится значением -1.

Функция loadimage возвращает:
-1 отсутствует файл
-2 Размер масива по x меньше размера картинки по x
-3 Размер масива по y меньше размера картинки по y
В случае успешной загрузки возвращается количество загруженых пикселей.

Проверить успешность загрузки можно так:
if (loadimage (#Image[0][0], "C:\Image.bmp")>0)messagebox("картинка загружена");
else messagebox("ошибка");
Или вывести код ошибки:
int r=loadimage (#Image[0][0], "C:\Image.bmp");
if (r<0)messagebox(r);

Если нам не известен реальный размер загружаемого изображения можно использовать функции imagewidth и imageheight,
Они возвращают размер загруженного изображения.
Пример:
int Image[300][300];
loadimage (#Image[0][0], "C:\Image.bmp");//К примеру картина имеет размер 100 на 200...
int X_image=imagewidth(#Image[0][0]);//X_image=100
int Y_image=imageheight(#Image[0][0]);//Y_image=200
В виде параметра эти функции принимают указатель на двухмерный масив int, в который загружено изображение.

Пример копирования части изображения в другую переменную меньшего размера:
int Image[300][300];
loadimage (#Image[0][0], "C:\Image.bmp");//К примеру картина имеет размер 100 на 200...
//нам надо создать новый рисунок, содержащий часть Image.bmp
int Image1[50][50];//выделяем память для нового рисунка размером 50 на 50
//копируем
int x, y;
x=0;
xs: if (x<50)
{
y=0;
ys: if (y<50)
{
Image1[x][y]=Image[x][y];
y++;
goto ys;
}
x++;
goto xs;
}

Несмотря на разные размеры масивов никаких смещений при копирование делать не надо.

Для создания изображений используемых в скрипте для поиска лучше воспользоваться встроенным в Кибор графическим редактором.
Он сам создаст .bmp файл, заполнит неучаствующие в поиске области фоновым цветом, выделив необходимое количество памяти и сгенерирует код загрузки и поиска этого изображения.
 
 Top
Kibor
Отправлено: 27 Марта, 2020 - 13:40:49
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Поиск изображений на экране.

При написание скриптов часто возникает необходимость дать знать программе что творится на экране.
Для этого существует функция findimage. Она сканирует весь или часть экрана или окна конкретной программы и ищет совпадения с загруженными ранее из .bmp файлов в память программы изображеними. В Windows 7 при глубине цвета 32 findimage работает в перекрытых или сдвинутых за пределы экрана окнах так же.

findimage с высокой скоростью, но немного пониженной надежностью поиска тут - Быстрый, но с немного пониженной ненадежностью поиск


Поиск деформированных изображений с помощью findimage - Поиск деформированных изображений

Синтаксис:
CODE:
findimage(-1, #image[0][0], fon_color, #x[0], #y[0], x_start, y_start, x_finish, y_finish, wind);

Первый параметр - если -1 - искать все совпадающие изображения и записывать их в масив. Если не -1 , к примеру 5... искать до 5 включительно совпадений и завершать поиск.
Второй - указатель на масив int в котором хранится искомое изображение.
Третий - фоновый цвет который не учитывается при сравнение изображений. Если указать -1, все цвета учитываются. В виде фонового цвета можно указать цвет конкретного пикселя искомой картинки - image[0][0] (цвет левого верхнего пикселя)... и т.д.
Четвертый и пятый - указатели на одномерные масивы int, в которые будут сохранены координаты найденых в окне изображений.
Шестой и седьмой - стартовые клиентские координаты в окне в котором ищется изображение относительно верхнего левого угла.
Восьмой и девятый - клиентские координаты окончания поиска в окне в котором ищется изображение.
Десятый - указатель на окно в котором ищем изображение. При -1 ищется по всему экрану.

Так же в качестве последнего параметра можно указать указатель на двухмерный массив int в котором хранится изображение.
В этом случае будет искаться в нем.
CODE:
findimage(1, #Image[0][0], 16777215, #x[0], #y[0], 0, 140, wind.widthclient, wind.heightclient, #image_skrin[0][0]);


Пример:
//загружаем изображение туза пик сохраненного заранее в файле
CODE:
int Image[68][92];
loadimage (#Image[0][0], "C:\Image.bmp");
//получаем указатель на окно игры
win wind=window ("Косынка", "Solitaire", -1);
//Сканируем ряд с картами в игре где хотим найти этот туз
int x[1], y[1];//масивы для сохранения координат левых верхних углов найденых в игре тузов пик. так как туз только 1, то масивы имеют размеры 1.
//Ищем одно совпадение не учитывая цвет 16777215, начиная по x 0 y 140, заканчивая на координатах wind.widthclient и wind.heightclient (то есть до правого нижнего угла). При нахождение записываем координаты левого верхнего угла найденого изображения в масивы x и y. Все записываемые координаты расчитываются относительно стартовой точки поиска. То есть найденая картинка находящаяся по клиентским координатам игры 200 200 будет записана как 200 60, так как точка старта 0 140.
findimage(1, #Image[0][0], 16777215, #x[0], #y[0], 0, 140, wind.widthclient, wind.heightclient, wind);


Функция возвращает колическво найденых изображений. Координаты найденых изображений находятся в одномерных масивах int x[50], y[50]; (50 для примера).
В случае ошибка возвращает:
-1 размер масива в который записываются X координаты меньше найденых изабражений
-2 размер масива в который записываются Y координаты меньше найденых изабражений
-3 Область поиска меньше искомого рисунка по X
-4 Область поиска меньше искомого рисунка по Y

Пример демонстрирующий ожидание, поиск и двойной клик по центру найденого туза:

//Получаем указатель на окно игры и устанавливаем новый размер клиента окна, с которым мы работали при создание изображения туза для поиска
CODE:
win wind=window ("Косынка", "Solitaire", -1);
wind.widthclient=800; wind.heightclient=519; wind.leftclient=16; wind.topclient=59;
moveclient(wind);

//Загружаем изображение туза
int Image[68][92];
loadimage (#Image[0][0], "C:\Image.bmp");

//Ищем туза в цикле пока не появится в ряду среди карт отступая сверху клиентской части игры 140. Что бы не найти туза в верхнем ряду.
int x[1], y[1];
st: if (findimage(1, #Image[0][0], 16777215, #x[0], #y[0], 0, 140, wind.widthclient, wind.heightclient, wind)<1)goto st;
//Двойной клик по центру найденого туза. Координату Y смещаем на 140
mousedbl(LEFT, x[0]+imagewidth(#Image[0][0])/2, y[0]+imageheight(#Image[0][0])/2+140, 1, wind);


Функцию findimage так же можно использовать для поиска изображений имеющих отклонения цветов от исходного изображения, или по неполному (к примеру частично перекрытому другим изображением). В этом случае findimage принимает 17 параметров:
findimage(1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0, 1366, 768, Красный_меньше_на, Красный_больше_на, Зеленый_меньше_на, Зеленый_больше_на, Синий_меньше_на, Синий_больше_на, Процент_совпадений_достаточный_для_идентификации, флаг_не_искать_в_области_где_найдено, -1);

Объяснение:
Каждый цвет состоит из трех основных цветов - Красный(R), Зеленый(G), Синий(B). (R, G, B). Каждый из этих трех цветов обозначается числом от 0 до 255. К примеру цвет (0, 0, 0) будет черный, а (255, 255, 255) белым. (255, 0, 0) красным, а (255, 50, 70) красным с примесью зеленого и синего.

Обозначение параметров:
Красный_меньше_на - тут указываем число НА которое красный компонент может быть меньше того что находится в поиске.
Красный_больше_на - тут указываем число НА которое красный компонент может быть больше того что находится в поиске.
Зеленый_меньше_на, Зеленый_больше_на, Синий_меньше_на, Синий_больше_на аналогично.

Процент_совпадений_достаточный_для_идентификации - процент от общего количества пикселей участвующих в поиске достаточный для того что бы изображение считалось совпавшим. 100 - необходимо что бы все изображение совпало. 20 - достаточно совпадения одной пятой части изображения. Применять для поиска изображений которые могут частично быть перекрыты или часть цвета пикселей может выйти за пределы колебаний описанных вышеприведенными параметрами.

флаг_не_искать_в_области_где_найдено - если 1 больше не искать в областях на экране по размеру искомого рисунка где найден уже рисунок

Пример:
CODE:
findimage(1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0, 1366, 768, 20, 50, 50, 70, 10, 20, 33, 1, -1);

Ищем изображение совпавшее хотя бы на одну треть от того что ищем с колебаниями ДО:
меньше на 20 - больше на 50 (красный), меньше на 50 - больше на 70 (Зеленый), меньше на 10 - больше на 20 (Синий).

findimage с высокой скоростью, но немного пониженной надежностью поиска тут - Быстрый, но с немного пониженной ненадежностью поиск
 Цитата:
findimage (SWIFT, 10, #kibor[0][0], -1, #arrX[0], #arrY[0], 0, 0, 1920,1080, r,r,r,r,r,r,p, 1, -1);




Функцию findimage так же можно использовать для поиска массивов изображений

Пример:
CODE:
int Image_0[10][100][100];
int PosX, PosY;
int n=0;
a: if (n<10)
{
loadimage (#Image_0[n][0][0], "C:\Image_"+format(n)+".bmp");
n++;
goto a;
}
n=0;
a1: if (n<10)
{
if (findimage(1, #Image_0[n][0][0], 0, #PosX, #PosY, 0, 0, 1366, 716, -1)==1)
{
mousemove(PosX, PosY);
sleep(600);
}
n++;
goto a1;
}


Для остановки работы скрипта нажимаем CTRL+SHIFT+Z

На быстродействие поиска размер искомого файла почти не оказывает влияние. Влияет количество пикселей не имеющих фоновый цвет.
 
 Top
Kibor
Отправлено: 27 Марта, 2020 - 13:47:16
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Поиск 3Д моделей.

При поиске изображений на экране часто возникают ситуации в которых невозможно указать искомое изображение в .bmp файле. В частности это касается 3Д игр, так как 3Д модели не имеют определенной формы и их изображение зависит от угла взгляда, масштаба, анимации и т.д.

Подобные Кибору программы в этом случае бывают бессильны произвести поиск таких объектов. В Кибор эта проблема решена вводом специальной функции finddynamic.
Эта функция позволяет анализировать изображение на экране и возвращать координаты динамичных объектов, примерные размеры и форма которых описаны с помощью параметров этой функции. finddynamic отлично подходит для поиска 3Д моделей в 3Д играх и отсеивать неинтересующий мусор - ландшафт, лут, растительность и т.д.
Примером применения этой функции может служить скрипт бота для 3Д игры RF Online.

На этом скрине показано как эта функция видит анимированных 3Д мобов в игре:


Нажмите для увеличения

Синтаксис:
finddynamic принимает 12 параметров.
CODE:
finddynamic(21, #x[0], #y[0], ширина_искомого_места, высота_искомого_места, объем_искомого_объекта_X, объем_искомого_объекта_Y, Старт_поиск_X, Старт_поиск_Y, Финиш_поиск_X, Финиш_поиск_Y, указатель_на_окно);

Обозначение:
1.) Если -1 - искать все объекты сколько есть, если больше 0 - искать указанное количество и завершать поиск. Про 0 читайте дальше..
2.) 3.) Указатели на одномерные int масивы, в которые записываются координаты центров искомых мест.
4.) 5.) Половинные размеры искомых мест в объектах. Все пикселя должны быть определены как динамичноменяющиеся. См. рис. ниже.
6.) 7.) Половинные размеры объемов по X Y, в которых при нахождение искомого места не будет производиться дополнительный поиск. См. рис. ниже
8.) 9.) Левый верхний угол старта поиска в клиентских координатах окна.
10.) 11.) Правый нижний угол финиша поиска в клиентских координатах окна.
12.) Указатель на окно.

Объяснение параметров см. на рисунке:

Нажмите для увеличения


Для идентификации объекта все пикселя входящие в перекресток ширины и высоты искомого объекта должны быть динамичными без пропусков. На скрине они имеют красную подсветку. Центр перекрестия является координатами объекта. Он так же центр объема, в котором больше не будет искаться никакой объект. То есть даже при наличие не одного такого перекрестия данный объект будет иметь только одни координаты. Для наглядного подбора размеров следует установить в игре желаемую позицию персонажа и камеры, навести мышь на окно с игрой, нажать CTRL+SHIFT+S и воспользоваться встроенным графическим редактором. Функция возвращает количество найденых объектов. В случае ошибки -1 - масив X меньше количества найденых объектов, -2 - масив Y меньше количества найденых объектов.

Использование finddynamic:
Использовать за 2 прохода. Первый вызов с первым параметром 0:
CODE:
finddynamic(0, #x[0], #y[0], 0, 0, 0, 0, Старт_поиск_X, Старт_поиск_Y, Финиш_поиск_X, Финиш_поиск_Y, указатель_на_окно);//Сохраняем изображение экрана
sleep(пауза);// пауза для обновления анимированного изображения в игре.
finddynamic(21, #x[0], #y[0], ширина_искомого_места, высота_искомого_места, объем_искомого_объекта_X, объем_искомого_объекта_Y, Старт_поиск_X, Старт_поиск_Y, Финиш_поиск_X, Финиш_поиск_Y, указатель_на_окно);//сравниваем с сохраненным изображением и ищем изменившиеся объекты, записывая их координаты.

Так же можно указать не обязательным параметром разбежность, при которой цвета пикселей не будут считаться разными. Подробнее о указание разбежности см тут
 
 Top
Kibor
Отправлено: 27 Марта, 2020 - 13:51:10
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Узнать цвет пикселя

Часто бывает надо узнать цвет пикселя под курсорм или в определенных координатах экрана или окна.

Для этого существует функция getcolor.

getcolor() - возвращает цвет в текущих координатах под курсором мыши.
getcolor(10, 20) - возвращает цвет в экранных координатах 10, 20
getcolor(10, 20, wind) - возвращает цвет в клиентсках координатах контрола или окна на которой ссылается указатель wind. Если указан указатель - координаты надо ввести клиентские окна на который указатель. Если вместо указателя поставить -1, будет по всему экрану так как и без указателя.

Работает с перекрытыми окнами тоже. Возвращает значение int.
 
 Top
Kibor
Отправлено: 27 Марта, 2020 - 13:51:53
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Работа с разрешением экрана

Для определения параметров экрана можно воспользоваться функцией getdisplay:
getdisplay(color, x, y);
Все параметры имеют тип int.
В первый записывается глубина цвета.
Во второй разрешение экрана по горизонтали.
В третий разрешение экрана по вертикали.
В случае ошибки возвращает 0. В случае удачного определения 1.

Установить новые параметры экрана можно функцией senddisplay:
senddisplay(color, x, y);
senddisplay(32, 1024, 768);
В случае ошибки возвращает 0. В случае удачной установки 1.
 
 Top
Kibor
Отправлено: 27 Марта, 2020 - 13:52:54
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Вывод сообщений во время выполнения скрипта.

Сообщения выводятся на экран в диалоговом окне с одной кнопкой функцией messagebox.
В виде параметров принимаются все типы переменных кроме win

CODE:
string str="Это";
char ch='!';
messagebox(str+" сообщение"+ch);


Или:
CODE:
int a=5;
double b=1.57;
messagebox(a+b);


Или:
CODE:
messagebox(senddisplay(32, 1024, 768));
 
 Top
Kibor
Отправлено: 27 Марта, 2020 - 13:57:10
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Пауза sleep.

Функция sleep приостанавливает выполнение программы на время в милисекундах, указанное в параметрах:
sleep(500); - останавливает выполнение программы на пол секунды.

Использовать для программирования пауз в выполнение скрипта.
Рекомендуется использовать в замкнутых циклах, выполняющих по кругу сканирование чего либо и ожидание чего либо, так как такие циклы хорошо грузят процессор. Пауза в несколько милисекунд разгрузит компьютер.

Пример ожидания запуска калькулятора:
CODE:
while(window ("Калькулятор", "CalcFrame", -1)==0)sleep (50);
messagebox("Калькулятор запущен");
 
 Top
Kibor
Отправлено: 27 Марта, 2020 - 13:58:25
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Текстовый редактор программы Кибор.

Текстовый редактор Кибор имеет все необходимые функции для удобного кодинга. Многоцветная раздельная для операторов, типов переменных, функций, ключевых слов подсветка делает код хорошо читаемым.

С помощью мыши можно производить все операции по выделению и перетаскиванию текста. Двойной щелчок по тексту выделит отдельное слово под курсором, одинарный щелчок по левому полю редактора выделяет строку с символами перевода каретки, двойной выделят строку без перевода каретки. По левому полю можно выделять целые блоки цельных строк.

Всплывающее меню содержит команды вырезки, копирования и вставки текста.

Парсинг кода в Кибор не накладывает жестких правил на разделение текста пробелами (когда это не сливает в одно слово к примеру тип или оператор и имя переменной) и перевод строк. Несколько строк кода можно писать в одну строку разделив их « ; » означающим конец строки. Одну строку кода можно при необходимости разделить на несколько.

Имена переменных, функций и переходов могут быть при желание на русском языке.
 
 Top
Kibor
Отправлено: 27 Марта, 2020 - 14:00:39
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Шпион получающий информацию о окнах, контролах, координатах мыши и цвете экрана.

Нажмите для увеличения

При написание скриптов часто необходимо получать указатели на окна и контролы, указывать их размеры, позиции и т.д. Координаты мыши на экране и окнах, цветах пикселей...

Получить эти данные без спец программ часто невозможно и даже при их наличие тратится много времени для получения необходимых параметров и внедрения их в скрипт. Часто подобные Кибору программы получают указатель непосредственно перед каждым запуском скрипта вручную, так как при написание скриптов не имеют возможности указать необходимые для надежной индификации данные, не меняющиеся при каждом запуске игры или программы, действия в которых надо автоматизировать. В Киборе же возможно один раз при написание скрипта указать все данные и больше ни о чем не заботиться. Скрипт будет работать без дополнительных настроек на разных компьютерах.

Кибор имеет встроенный инструмент позволяющий в реальном времени получить все необходимые данные, сгенерировать необходимый код и сразу же использовать его в программе.
Так же он незаменим для снятий координат мыши в окнах, контролах и на экране и цвете пикселя под курсором.

Для получения параметров наводим мышь на интересующий контрол и нажимаем CTRL+SHIFT+S

Описание:
1) и 2) Переключатели, показывающие все нижеследующие размеры в оконных или клиентских размерах и координатах. Оконными являются размеры учитывающие размер оконтовки вокруг окон в Windows. Клиентские - чистый размер полезного поля программы. При использование размеров и координат в скрипте надо всегда выбирать клиентские, так как все функции используют их. Это приводит к независимости при выполнение скрипта от оформления Windows и даже операцонной системы.

3) и 4) Переключатели показывающие либо самое главное либо непосредственно родительское окно контрола находящегося под курсором.

5) Показывает полный список всех родительских окон контрола под курсором, их параметры и можно выбрать любое подходящее для индификации контрола. См. рис. ниже.

6) Содержит сгенерированный исходя из настроек код указателя на родительское окно. Для вставки его в код надо нажать на него левой кнопкой мыши. Он вставится в место позиции курсора.

7) 9) 10 ) 12) 18) 21) 24) 25) Позволяют указать какие параметры будут использоваться в генерируемых указателях. Проследите чтобы эти данные могли надежно индифицировать контрол с которым будет работать скрипт.

8) 30 ) 11) 13) 19) 20) 25) 27) Полученные параметры сканирумых окон и контролов.

14) 28) Клиентские координаты мыши в контролах и окнах.

15) При активном состояние к указателю на контрол добавляется указатель на родительское окно для индификации контрола по параметрам самого контрола и его родительского окна.

16) Аналогично как и 5) , только тут показывается список всех дочерных окон и контролов по отношению к верхнему окну указатель на которое находится в 6).

17) В этом поле находится сгенерированный исходя из выбранных параметров код указателя на контрол. Щелкните на него для того чтобы вставить в текстовый редактор. При генерации выбираются оптимальные для конкретной ситуации вариации функций.

22) 23) Переключатели показывающие либо экранные координаты контрола, либо относительно выбранного родительского окна.

29) Содержит экранные координаты мыши.

31) Содержит цвет пикселя под курсором.

Любой из параметров можно вставить в программу щелчком мыши на него.

Функцию возвращающую указатель можно использовать как в виде параметра в функции программирования каких нибудь действий:
button(1, window (-1, "Button", 50, 161, -1, -1, window ("Калькулятор", "CalcFrame", -1)));

Так и сохранить указатель в переменной и использовать его многократно:
win wind=window (-1, "Button", 50, 161, -1, -1, window ("Калькулятор", "CalcFrame", -1));
button(1, wind);
В этом случае нам в скрипте станет доступна структура данных об этом окне или контроле. См.: Индификация окон и контролов
 
 Top
Kibor
Отправлено: 27 Марта, 2020 - 14:02:34
Post Id



Администратор
Эксперт


Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Работа с графическим интерфейсом в играх и программах. Подготовка графического материала для использования в скриптах при поиске и анализе изображений.

Нажмите для увеличения

Для распознавания изображений на экране необходимо заранее подготовить графический материал искомых рисунков. Можно воспользоваться для этого любым графическим редактором, предварительно сняв скриншот с экрана. Данный вариант очень не удобный и долгий.

Кибор оснащен не имеющим аналогов графическим редактором специально заточенным для этих целей. Инструментарий этого редактора позволяет работать с окном игры напрямую через окно Кибор, при необходимости видя в реальном времени всю динамику игры. Фильтр динамики позволяет автоматически отделить динамично меняющееся изображение от статичного.

В Windows 7 32 бита глубина цвета, поддерживается работа с перекрытыми или сдвинутыме за пределы экрана играми и программами, наблюдая эту игру непосредственно в редакторе.

Выделив интересующее изображение, с помощью меню можно сразу снять выделение с непостоянных или наоборот - неменяющихся пикселей, которые при сохранение будут закрашены фоновым цветом не участвующем в поиске и сравнение.

При сохранение выделенного изображения в .bmp файл генерируется код загрузки этого рисунка и функции поиска, который можно сразу вставить в программу предварительно скопировав его в буфер обмена нажав на соответствующие кнопки.

Для получение снимка окна или контрола наводим на него мышку и жмем CTRL+SHIFT+S

Описание контролов:
1) Обновляет изображение в редакторе синхронизировав его с игрой.
2) Включает потоковое воспроизведение изображения с окна с которым мы работаем.
3) Показывает соответственно весь экран, родительское окно или контрол, указанные в указателях на вкладке Код.
4) Масштаб, сдвиг, выделение рамкой или попиксельно, снятие цвета пикселя для использования как фоновый цвет.
5) Подсветить выделение.
6) Выделенное мигает.
7) Цвет подсветки выделенного. Нажав на него можно его изменить.
8) При нажатие на эту кнопку включается отслеживание меняющих цвет пикселей, которые подсвечиваются выбранным цветом. Эту кнопку можно так же нажать в свернутом окне Кибор нажав комбинацию CTRL+SHIFT+A. Включение и выключение фильтра динамики озвучивается сигналами разной тональности. Затем эти пикселя можно отделить от других соответствующими функциями в сплывающем меню. Как правильно пользоваться фильтром динамики см Фильтрование динамики с учетом введенной погрешности цветов. Использовать для поиска в findimage при не полном совпадение
9) Подсветить динамичные пикселя.
10) Цвет подсветки динамичных пикселей.
12) При сохранение выделенного в файл, в этом поле прописывается путь к файлу на диске. Скопировать в буфер обмена его можно нажав на кнопку 11)
13) Фоновый цвет, которым будут закрашены все невыделенные пикселя в сохраненном файле. Его же указывать в функции findimage как фоновый цвет.
14) Этот же цвет в int.
15) Имя генерируемой переменной int, в которую будет загружено изображение. Оно же и имя файла. Имя файла и имя переменной можно изменять по отдельности как угодно. Если имя переменной не менять, оно автоматически будет меняться при каждом новом создание файла.
16) Сгенерируемая функция загрузки изображения. Размер масива int автоматически установлен по размеру картинки.
17) Имена и размер масивов для хранения координат найденых совпадений.
18) Сгенерируемая функция поиска изображений.
19) Размер Картинки.
20) Количество пикселей не имеющих фоновый цвет и учавствующих в поиске.

Часто нет необходимости сравнивать при поиске все изображение. Поэтому достаточно выделить ключевые детали и отдельные пикселя этого изображения в разных местах.

В данный момент для работы графического редактора необходима глубина цвета экрана 32 бита.
 
 Top
Страниц (9): « 1 [2] 3 4 5 6 7 8 9 »
Сейчас эту тему просматривают: 16 (гостей: 16, зарегистрированных: 0)
« О программе Кибор »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by