Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Данный скрипт демонстрирует поиск объектов на экране, которые не возможно найти по готовому изображению, по конкретным пикселям и (при условие что они будут неподвижные) по динамике.
Для примера выбрана 3Д игра RF Online в которой ищутся мобы. Применена функция findheapcolor - подробнее о ней
Данную функцию можно применять в разных ситуациях. На видео демонстрируется работа этого скрипта в игре. Посмотреть видео в поиска мобов в игре.
Данный скрипт производит поиск мобов и для видимости на их месте выводит их номер на экран поверх игры.
CODE:int r=7;//Допускаемое отклонение цвета пикселя
int color[3], kol[3];//Массивы для трех цветов
color[0]=2899273; color[1]=2899273; color[2]=791579;//Тут три цвета которые будем искать в куче
kol[0]=3; kol[1]=3; kol[2]=3;//Тут сколько должно совпасть пикселей для каждого цвета
int x[50], y[50];//Тут координаты найденные
int Xx, Yy, k=0, k1=0, n;//Вспомогательные
textbkcolor (8454143,255);//Установка цвета текста
win w=window ("RF Online", "D3D Window", -1);//Указательна окно с игрой
e: k=findheapcolor(50, #color[0], #kol[0], 3, 3, #x[0], #y[0], 10, 10, 100, 100, 0, 80, w.widthclient, w.heightclient-200, r, r, r, r, r, r, w);
for (n=0; n<k; n++)//Перебор в цикле координат мобов и вывод на них их номер
{
Xx=x[n]+w.leftclient;
Yy=y[n]+w.topclient+80;
textout(n, Xx, Yy, "", 0);
textout(n, Xx, Yy , format(n), 0);
}
n=k;s1:if (n<k1){textout(n, x[n]+w.leftclient, y[n]+w.topclient+80 , "", 0);n++;goto s1;}k1=k;
goto e; |