VladosS |
Отправлено: 17 Января, 2015 - 17:28:43
|
Наблюдатель
Покинул форум
Сообщений всего: 26
Дата рег-ции: Янв. 2015
Откуда: Россия
Репутация: 0
|
спс, попробую
(Добавление)
Окно кибор пропадает и появляется снова
int Posk[200][200];
int P_X, P_Y, u_X, u_Y;
int xe, ye, color;
int S_X, S_Y, F_X, F_Y;
win wind=window ("StarConflict 1.0.13.64275", "game_main_window", -1);
getdisplay(color, xe, ye);
P_X=9; P_Y=705;
loadimage(#Posk[0][0],"E:\Star Conflict\Screenshots\svsdfva.bmp);
F_X=P_X[0]+899; F_Y=P_Y[0]-400;
sleep(10);
S_X=P_X[0]+879; S_Y=P_Y[0]-448;
sleep(10);
loop:;
sleep(10);
if (getkeystate(192)==1)Poisk();
goto loop;
function Poisk()
{
findimage(1, #Posk[200][200], 0, #u_X, #u_Y, S_X, S_Y, F_X, F_Y, 50, 50, 50, 50, 50, 50, 50, 1, wind);
mousemove(u_X,u_Y);
} |
|
|
VladosS |
Отправлено: 17 Января, 2015 - 19:37:50
|
Наблюдатель
Покинул форум
Сообщений всего: 26
Дата рег-ции: Янв. 2015
Откуда: Россия
Репутация: 0
|
Kibor пишет: Цитата: loadimage(#Posk[0][0],"E:\Star Conflict\Screenshots\svsdfva.bmp тут ");
видно нет подсвети после
?
Оу, точно, спасибо
(Добавление)
теперь просто вылетает, когда на тильду жмешь) (192) |
|
|
Kibor |
Отправлено: 17 Января, 2015 - 20:13:59
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
VladosS пишет: теперь просто вылетает, когда на тильду жмешь)
гг гг
ошибка про которую я писал в
Цитата:
Цитата:
finddynamic(0, u_X, u_Y, 0, 0, 0, 0, S_X, S_Y, F_X, F_Y, wind);
sleep(30);
k=finddynamic(1, u_X, u_Y, 20, 20, 30, 30, S_X, S_Y, F_X, F_Y, wind);
sleep(10);
mousemove(u_X,u_Y);
поиск оконный. движение экранное
Цитата: findimage(1, #Posk[200][200], 0, #u_X, #u_Y, S_X, S_Y, F_X, F_Y, 50, 50, 50, 50, 50, 50, 50, 1, wind);
mousemove(u_X,u_Y)wind;
и новая
findimage(1, #Posk[200][200], 0, #u_X, #u_Y, S_X, S_Y, F_X, F_Y, 50, 50, 50, 50, 50, 50, 50, 1, wind);
указатель на что? на конец массива?
CODE:findimage(1, #Posk[0][0], 0, #u_X, #u_Y, S_X, S_Y, F_X, F_Y, 50, 50, 50, 50, 50, 50, 50, 1, wind);
mousemove(u_X,u_Y, wind);
Posk эт массив чисел (http://kibor-bot.com/forum/topic.php?forum=14&topic=10)
в этом массиве цвета пикселей рис.
указатель надо на начало рис.
Цитата: findimage(1, #Posk[0][0], 0, #u_X, #u_Y, S_X, S_Y, F_X, F_Y, 50, 50, 50, 50, 50, 50, 50, 1, wind);
mousemove(S_X + u_X,S_Y + u_Y,wind); |
|
|
Kibor |
Отправлено: 17 Января, 2015 - 20:19:57
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Цитата: findimage(1, #Posk[0][0], 0, #u_X, #u_Y, S_X, S_Y, F_X, F_Y, 50, 50, 50, 50, 50, 50, 50, 1, wind);
mousemove(S_X + u_X,S_Y + u_Y,wind);
разобраться почему выделено красным. это правильно.
подсказываю... координаты ищутся относительно старта поиска..
то есть если старт не 0 надо делать смещение так как мышь работает от 0 |
|
|
Kibor |
Отправлено: 05 Марта, 2015 - 18:30:40
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
VladosS пишет: Я маленько подумал и придумал, может быть стоит искать форму объекта примерного цвета с расхождением 15-20%?
все зависит от того что надо искать. и от условий.
Сканирование изображения экрана
finddynamic- Искать динамично меняющиеся области экрана
findimage- Искать изображение на экране по маске изображения загруженного в память Кибор
findheapcolor- Ищет области на которых есть скученности пикселей определенных цветов
getcolor- Получить цвет пикселя
scanpixel- Сравнивает введенный цвет с цветом пикселя в веденных координатах ориентируясь на разбежности в цветах RGB
findcolor- Найти все координаты всех пикселей указанного цвета |
|
|
VladosS |
Отправлено: 05 Марта, 2015 - 20:05:14
|
Наблюдатель
Покинул форум
Сообщений всего: 26
Дата рег-ции: Янв. 2015
Откуда: Россия
Репутация: 0
|
Вот, новый вариант, упростил поиск
CODE:int f,g;
sleep(10);
int xe, ye, color, n, m;
sleep(10);
int S_X, S_Y, F_X, F_Y;
sleep(10);
win wind=window ("StarConflict 1.0.13.64275", "game_main_window", -1);
sleep(10);
getdisplay(color, xe, ye);
sleep(10);
loop:;
sleep(50);
if (getkeystate(192)==1)Poisk();
goto loop;
function Poisk()
{
getmouse(n, m, wind);
finddynamic(1, #f, #g, 2, 2, 40, 40, n-20, m-20, n+20, m+20, wind);
mousemove(n,m);
}; (Отредактировано автором: 05 Марта, 2015 - 20:06:01) |
|
|
|