Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Снова вопрос о findimage

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

1. Chick - 14 Июня, 2020 - 08:37:31 - перейти к сообщению
Почему-то после добавления одной функции кибор стал самопроизвольно закрываться.
Функцию удалил, вернул всё как было, но перестали находиться картинки ((

Код получился такой:

CODE:
function rubka()
{

int col_KIB, ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB;
int PosX1[100], PosY1[100];
int PosX, PosY;

int Trees[6][100][100];
int trees;

int dalshe[87][19];
int buy[67][28];
int closeup[24][26];

loadimage (#dalshe[0][0], "E:\kibor\bot\images\dalshe.bmp");
loadimage (#buy[0][0], "E:\kibor\bot\images\buy.bmp");
loadimage (#closeup[0][0], "E:\kibor\bot\images\close.bmp");

sleep(1000);

getdisplay(col_KIB, ex_KIB, ey_KIB);

int n=0;
a:
if (n<6)
{
loadimage (#Trees[n][0][0], "E:\kibor\bot\images\tree_"+format(n)+".bmp");
n++;
goto a;
}

n=0;
a1:
if (n<6)
{
a2:
trees = findimage(-1, #Trees[n][0][0], 0, #PosX1[0], #PosY1[0], 0, 0, 1920, 1080, -1);
sleep(1000);
if (trees >0 )
{
sleep(1000);
mousemove(PosX1[trees-1], PosY1[trees-1]);
sleep(600);
mouse(LEFT);
sleep(600);
if (findimage(1, #dalshe[0][0], 0, #PosX, #PosY, 0, 0, 1920, 1080, -1)==1)
{
mousemove(PosX, PosY);
sleep(600);
mouse(LEFT);
}
if (findimage(1, #buy[0][0], 0, #PosX, #PosY, 0, 0, 1920, 1080, -1)==1)
{
if (findimage(1, #closeup[0][0], 0, #PosX, #PosY, 0, 0, 1920, 1080, -1)==1)
{
sleep(1000);
mousemove(PosX, PosY);
sleep(600);
mouse(LEFT);
return;
}
}
trees--;
}
n++;
goto a1;
}
return;
}


Уже весь мозг себе сломал, помогите пожалуйста!
картинки все на месте и, проверял - загружаются (loadimage возвращает числа).
2. Kibor - 14 Июня, 2020 - 08:41:50 - перейти к сообщению
Вставил этот код в Кибор. Кибор не закрылся..
Когда закрывается? После чего? Отладчик запустите.
Эта функция один раз вызывается? если нет, то почему в ней постоянно грузит loadimage?
3. Chick - 14 Июня, 2020 - 08:44:24 - перейти к сообщению
 Kibor пишет:
Вставил этот код в Кибор. Кибор не закрылся..
Когда закрывается? После чего? Отладчик запустите.
Эта функция один раз вызывается? если нет, то почему в ней постоянно грузит loadimage?


Эта функция вызывается по таймеру. С лоадом я еще переделаю - пока сырой вариант.
Закрывался кибор из-за другой функции, её уже нет.

Вопрос заключается в поиске картинок - подскажите, что не так делаю. Пожалуйста!

В частности, начиная с метки a2...
4. Zireael - 14 Июня, 2020 - 09:18:07 - перейти к сообщению
 Цитата:
подскажите, что не так делаю.

А что надо сделать?
5. Chick - 14 Июня, 2020 - 09:19:56 - перейти к сообщению
 Zireael пишет:
 Цитата:
подскажите, что не так делаю.

А что надо сделать?

Нужно поочередно найти картинки и кликнуть по ним.
А если у меня есть какая-то ошибка в коде, нужно меня ткнуть в неё носом.
Дело в том, что до падения кибор их находил, а после - перестал.
6. Zireael - 14 Июня, 2020 - 09:34:38 - перейти к сообщению
 Цитата:
до падения кибор их находил, а после - перестал.

Может картинки отличаются. Добавляйте в findimage параметр разбежность в цвете.
Можно уменьшить точность поиска, но при этом увеличится время поиска, так что это в последнюю очередь.
7. Chick - 14 Июня, 2020 - 09:41:06 - перейти к сообщению
 Zireael пишет:
 Цитата:
до падения кибор их находил, а после - перестал.

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

Понял, спасибо.
Но мне хочется понять как такое вообще возможно? Ни разрешение, ни игра ни картинки не менялись. И вот Кибор просто перестал находить то, что раньше находил...
Хотя есть предположение, что при смене координат цвета немного изменяются у объектов...
8. Zireael - 14 Июня, 2020 - 09:52:22 - перейти к сообщению
 Цитата:
Но мне хочется понять как такое вообще возможно?

Да вообще легко. Это только с виду изображения одинаковые, при увеличении становится видно, что отличаются некоторые пиксели. Хотя и не всегда.
Цвет может отличаться от времени суток в игре, погодных условий, фона за изображением и полно других причин.
На разных пк цвета часто хоть немного, но отличаются.
 Цитата:
Нужно поочередно найти картинки и кликнуть по ним.

Принцип такой, что надо можно дописать:
CODE:
int Trees[6][100][100];
load_image(); // загрузка картинок вначале скрипта


// в нужном месте скрипта вызов функции поиска
rubka();



function rubka()
{
int PosX1[100], PosY1[100];

for(int n=0; n<6; n++)
{
int trees = findimage(sizearray(PosX1), #Trees[n][0][0], 0, #PosX1[0], #PosY1[0], 0, 0, 1920, 1080, -1);
messagebox("n = "+format(n)+"^r^nРезультат поиска: "+format(trees));
if (trees > 0)
{
mousemove(PosX1[0], PosY1[0]); // навести курсор на первую найденную картинку
}
}
}

function load_image()
{
for(int n=0; n<6; n++)loadimage (#Trees[n][0][0], "E:\kibor\bot\images\tree_"+format(n)+".bmp");
}

Powered by ExBB FM 1.0 Final