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

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

 Страниц (1): [1]   

> Без описания
Baltazar
Отправлено: 12 Июля, 2020 - 17:51:51
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июль 2020  
Репутация: 0




В игре нужно определить что ХП персонажа полное, Для этого я получаю параметры окна и контрола в переменные wg и w соответственно. после чего идет отправление нажатий клавиш для установки искомого окна в востановленное состояние, после чего я указываю размеры окна, и ищу в контроле картинку. По задумке если картинка не найдена скрипт возвращается снова к поиску. А если найдена то идут указания на 2 клика по координатам в контроле. Но вне зависимости от того есть картинка ХП на экране или нет её findimage возвращает то значение которое я ставлю в первом аргументе. то есть если поставлю - 1 вернёт -1 поставлю 1 вернёт 1. И кроме этого выдает ошибку при получении координат найденного изображения.
Вот код
win wg=window ("Áîéöîâñêèé êëóá - Google Chrome", "Chrome_WidgetWin_1", -1);
if (wg==0){messagebox ("error wg");}
win w=window ("Chrome Legacy Window", "Chrome_RenderWidgetHostHWND", wg);
if (w==0){messagebox ("error w");}
activate(wg);

keydown(LWIN);
key(UP);
keyup(LWIN);
keydown(LWIN);
key(DOWN);
keyup(LWIN);
pause(1000);

wg.widthclient = (1024);
wg.heightclient = (768);
moveclient(wg);
if (wg==0){messagebox ("error moveclient");}

pause(1000);

int xp[100][100];
loadimage (#xp[0][0], pathfolder()+"xp.bmp");

int x[1], y[1];

XP:;
pause(10000);
messagebox (findimage(-1, #xp[0][0], -1, #x[0], #y[0], 0, 0, w.widthclient, w.heightclient, 10, 10, 10, 10, 10, 10, 10, 1, w));

if(findimage(-1, #xp[0][0], -1, #x[0], #y[0], 0, 0, w.widthclient, w.heightclient, 10, 10, 10, 10, 10, 10, -1, 1, w)==0)
{
messagebox ("Не вижу ХП или ХП неполное");
pause(rand (5000, 8000));
goto XP;
}

else
{
messagebox ("Координаты " + #x[0] + " " + #y[0]);
messagebox ("Хп полное");
sendmouse(LEFT, rand (815, 871), rand (14, 24), w);
pause(rand (3000, 5000));
sendmouse(LEFT, rand (701, 789), rand (66, 81), w);
pause(rand (3000, 5000));
}

Второй день голову ломаю, Подскажите пожалуйста в чем ошибка?

(Отредактировано автором: 12 Июля, 2020 - 18:05:55)

 
 Top
Zireael
Отправлено: 12 Июля, 2020 - 18:02:58
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4449
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
то есть если поставлю - 1 вернёт -1 поставлю 1 вернёт 1.

 Цитата:
В случае ошибка возвращает:
-1 размер масива в который записываются X координаты меньше найденых изабражений
-2 размер масива в который записываются Y координаты меньше найденых изабражений
-3 Область поиска меньше искомого рисунка по X
-4 Область поиска меньше искомого рисунка по Y

Т. е. при -1 ищет все картинки. Массивы x и y размером 1, если найдётся больше одной картинки, то функция вернёт ошибку -1.
При первом параметре 1 возвращает 1, значит найдена одна картинка.
 Цитата:
И кроме этого выдает ошибку при получении координат найденного изображения.
messagebox ("Координаты " + #x[0] + " " + #y[0]);

CODE:
messagebox ("Координаты "+format(x[0])+" "+format(y[0]));
 
 Top
Baltazar
Отправлено: 12 Июля, 2020 - 20:30:57
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июль 2020  
Репутация: 0




Спасибо большое за разъяснения! Теперь показывает координаты x 0 y 0 И так как поставил 1 первым аргументом возвращает 1, то есть нашёл 1 совпадение. вот только по этим координатам не тот рисунок и совпадений не может быть больше 1, потому как нет на экране ничего похожего на полоску ХП и даже если на экране нет полоски ХП или оно не полное, он все равно находит совпадение по координатам x 0 y 0. Где то ещё есть ошибка. Буду благодарен за любую помощь.
(Добавление)
Вот код
win wg=window ("Áîéöîâñêèé êëóá - Google Chrome", "Chrome_WidgetWin_1", -1);
if (wg==0){messagebox ("error wg"Подмигивание;}
win w=window ("Chrome Legacy Window", "Chrome_RenderWidgetHostHWND", wg);
if (w==0){messagebox ("error w"Подмигивание;}
activate(wg);

keydown(LWIN);
key(UP);
keyup(LWIN);
keydown(LWIN);
key(DOWN);
keyup(LWIN);
pause(1000);

wg.widthclient = (1024);
wg.heightclient = (768);
moveclient(wg);
if (wg==0){messagebox ("error moveclient"Подмигивание;}

pause(1000);

int xp[100][100];
loadimage (#xp[0][0], pathfolder()+"xp.bmp"Подмигивание;

int x[1], y[1];

XP:;
pause(10000);
messagebox (findimage(1, #xp[0][0], -1, #x[0], #y[0], 0, 0, w.widthclient, w.heightclient, 0, 0, 0, 0, 0, 0, -1, 1, w));

if(findimage(1, #xp[0][0], -1, #x[0], #y[0], 0, 0, w.widthclient, w.heightclient, 0, 0, 0, 0, 0, 0, -1, 1, w)==0)
{
messagebox ("Не вижу ХП или ХП неполное"Подмигивание;
pause(rand (5000, 8000));
goto XP;
}

else
{
messagebox ("Координаты "+format(x[0])+" "+format(y[0]));
messagebox ("ХП полное"Подмигивание;
sendmouse(LEFT, rand (815, 871), rand (14, 24), w);
pause(rand (3000, 5000));
sendmouse(LEFT, rand (701, 789), rand (66, 81), w);
pause(rand (3000, 5000));
}

(Отредактировано автором: 12 Июля, 2020 - 20:48:02)

 
 Top
Zireael
Отправлено: 12 Июля, 2020 - 21:06:14
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4449
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
findimage(1, #xp[0][0], -1, #x[0], #y[0], 0, 0, w.widthclient, w.heightclient, 0, 0, 0, 0, 0, 0, -1, 1, w)

Процент совпадения не может быть отрицательным. От 0 до 100.
Зачем вообще нужен findimage для поиска хп? scanpixel или findcolor подойдут.
 
 Top
Baltazar
Отправлено: 12 Июля, 2020 - 21:21:15
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 12
Дата рег-ции: Июль 2020  
Репутация: 0




Огромное спасибо Улыбка Сам бы никогда не догадался что в этом случае -1 не работает как исключение аргумента. А findimage использовал по неопытности просто не знал о существовании других похожих функций, сейчас посмотрю их. Ещё раз СПАСИБО!Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 3 (гостей: 3, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by