Chick |
Отправлено: 14 Июня, 2020 - 16:37:31
|
Наблюдатель
Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2020
Репутация: 0
|
Почему-то после добавления одной функции кибор стал самопроизвольно закрываться.
Функцию удалил, вернул всё как было, но перестали находиться картинки ((
Код получился такой:
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 возвращает числа). |
|
|
Chick |
Отправлено: 14 Июня, 2020 - 16:44:24
|
Наблюдатель
Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2020
Репутация: 0
|
Kibor пишет: Вставил этот код в Кибор. Кибор не закрылся..
Когда закрывается? После чего? Отладчик запустите.
Эта функция один раз вызывается? если нет, то почему в ней постоянно грузит loadimage?
Эта функция вызывается по таймеру. С лоадом я еще переделаю - пока сырой вариант.
Закрывался кибор из-за другой функции, её уже нет.
Вопрос заключается в поиске картинок - подскажите, что не так делаю. Пожалуйста!
В частности, начиная с метки a2...(Отредактировано автором: 14 Июня, 2020 - 16:45:38) |
|
|
Chick |
Отправлено: 14 Июня, 2020 - 17:19:56
|
Наблюдатель
Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2020
Репутация: 0
|
Zireael пишет: Цитата: подскажите, что не так делаю.
А что надо сделать?
Нужно поочередно найти картинки и кликнуть по ним.
А если у меня есть какая-то ошибка в коде, нужно меня ткнуть в неё носом.
Дело в том, что до падения кибор их находил, а после - перестал. |
|
|
Chick |
Отправлено: 14 Июня, 2020 - 17:41:06
|
Наблюдатель
Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2020
Репутация: 0
|
Zireael пишет: Цитата: до падения кибор их находил, а после - перестал.
Может картинки отличаются. Добавляйте в findimage параметр разбежность в цвете.
Можно уменьшить точность поиска, но при этом увеличится время поиска, так что это в последнюю очередь.
Понял, спасибо.
Но мне хочется понять как такое вообще возможно? Ни разрешение, ни игра ни картинки не менялись. И вот Кибор просто перестал находить то, что раньше находил...
Хотя есть предположение, что при смене координат цвета немного изменяются у объектов... |
|
|
Zireael |
Отправлено: 14 Июня, 2020 - 17:52:22
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Но мне хочется понять как такое вообще возможно?
Да вообще легко. Это только с виду изображения одинаковые, при увеличении становится видно, что отличаются некоторые пиксели. Хотя и не всегда.
Цвет может отличаться от времени суток в игре, погодных условий, фона за изображением и полно других причин.
На разных пк цвета часто хоть немного, но отличаются.
Цитата: Нужно поочередно найти картинки и кликнуть по ним.
Принцип такой, что надо можно дописать:
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");
} (Отредактировано автором: 14 Июня, 2020 - 18:00:06) |
|
|
|