obm пишет:
Вчера долго эксперементировал, код действительно работает, окно тон не меняет. Но Кибор анализирует окно игры сек ~10-15 сек (мне казалось, что код не выполняется, а надо было всего лишь подождать), а весь экран (-1) анализирует за полсекунды, при том, что эта область по объему даже чуть больше окна игры. Еще странный момент в том, что один и тот же код в игре может анализировать изображение как 1-2 сек, так и 10-15 сек, зависимость выявить не смог.
10 15 сек не связаны с быстродействием анализа экрана в Кибор. Что то тормозит...
Проверьте быстродействие не запуская игру и лишние программы как в этой теме
http://kibor-bot.com/forum/topic...m=5&topic=41
obm пишет:
Кстати, из личного опыта, вы рекомендуете делать бота под фулскрин или под окно (бот будет торговать, а не бить мобов) ?
Под весь экран.
Но это не означает что надо искать по всему разрешению на мониторе...
Ограничивайте область поиска в findimage
К примеру можно найти заголовок окна который виден в углу окна игры. И относительно его рассчитывать область поиска
CODE:Image_0[0][0]-Изображение с заголовком окна который виден в левом верхнем углу окна
int col, xx, yy;
getdisplay(col, xx, yy);
sleep(1000);
findimage(1, #Image_0[0][0], -1, #x, #y, 0, 0, xx, yy, -1);
//в x y будет левый верхний угол окна
//Теперь область поиска для игры будет так
findimage(1, #Image_1[0][0], -1, #x1, #y1, x+5, y+15, x+ширина_окна_игры, y+высота_игры, -1);
//Кликать со смещением
mouse (x1+(x+5), y1+(y+15))
Можно и вручную указывать при запуске скрипта. так например..
CODE:int col, xe, ye;
int stX, stY;
getdisplay(col, xe, ye);//Разрешение экрана узнаем..
textout(0, xe/2-200, ye/2, "Наведите мышь на левый верхний угол клиента (не окна) игры и нажмите Ё.", 0);
r: if (getkeystate(192)!=1){sleep(50); goto r;}//Ждем когда нажмется Ё
getmouse(stX, stY);//Запишем координаты мышки (левый верх угол в клиенте)
obm пишет:
Но числа находятся на прозрачном фоне, и, по моим наблюдениям, даже сами числа частично прозрачны
По каким наблюдениям? Может есть все ж не прозрачные пикселя? Проверьте как тут
http://kibor-bot.com/stat/graphicskibor.php
obm пишет:
как определить минимальное достаточное необходимое отклонение цвета, только экспериментально?
Да.
obm пишет:
я сделал снимки 2 ух одинаковых цифр из разных мест. Как мне их быстро сравнить? Я поместил обе в пеинт, пипеткой считывал цвет, заливал этим цветом все вокруг цифр, потом заливал назад фоном, если цвет уходил у обоих, то он одинаковый, так я выделил расходящиеся пикселя. Как это можно сделать быстрее?
2 файла bmp в Кибор сравнить нельзя, но можно написать скрипт который их откроет, сравнит и сделает что надо... К примеру создаст 3 файл bmp в котором созранит только общие пикселя и остальное зальет фоновым цветом. Вот пример скрипта который сравнивает 2 файла и записывает в txt какие цвета общие. Это не то что надо в этом случае, но принцип понятен... Просто надо использовать свой алгоритм.
http://kibor-bot.com/forum/topic...54943#1387154943
Ну а вообще то если фильтр динамика показал что все пикселя динамичные, то не смысла сравнивать цифры с разных мест...
В этом случае можно выделить область которая относится к цифре , сохранить и искать эти картинки расширенной findimage. Небольшая разбежность должна помочь.