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

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

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

> Описание: warspear findimage
Xanox
Отправлено: 07 Февраля, 2023 - 04:46:04
Post Id



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


Покинул форум
Сообщений всего: 1
Дата рег-ции: Февр. 2023  
Репутация: 0




Добрый день.
Пишу бота по примерам Кибора
Проблема в том что findimage срабатывает только при key(UP) и key(DOWN),когда курсор идет вправо или влево, то функция findimage не срабатывает. Функция okryga.
Вот код:
CODE:
win w=window ("Warspear Online", "Warspear", -1);//Указатель на окно игры Warspear Online

int Pok_LS=0; //вывордить сообщение о личном сообщение = 1
int Pok_SYMK=0; //вывордить сообщение о сумке полной = 1
int LYT=1; //брать лут = 1

int Storona1[50][50], Storona2[50][50], Storona3[50][50], Storona4[50][50];
int Ryka[78][60], Mech[50][50], Image_net[34][14], net_mesta[52][3], Skil[8][10], Nik[200][50];
int PosX[1], PosY[1];
int rx1, ry1, rx2, ry2, rx3, ry3, rx4, ry4;
int p=200;
int t=150;//увеличить если не определяется курсор над лутом в виде руки
int LS=0;
int mech_kyrs=0;
int jdat;
int kryg_es=1;
int Poisk_Pers=1;//0 - поиск лута начинается от точки атаки, 1 - поиск лута начинается от перса
int KliK_nik_X=30;//Надо подобрать что бы клик был на самом персе под ногами
int KliK_nik_Y=90;//Надо подобрать что бы клик был на самом персе под ногами
int kr;
int kol_kr=2;//Количество кругов поиска лута (расширяемых)
/////////////////////////////////////////////////////////////////////////////////////
activate (w) ;

load_image();
rash_image();

//////////////////////////////


n: prov_tab();

if (getcolor(65, 43, w)!=2169343){sleep(100); prov_tab(); goto n;}//Уровень жизни

if (getcolor(366, 413, w)==3127271 && getcolor(413, 455, w)==2589631){key('1');sleep(500);}//если активен скил . деактиваровать


///////////////////////////////


if (kryg_es==1)
{
kryg_es=0;

if (okryga(1)==1)//просканировать круг на поиск лута или моба
{
if (mech_kyrs==1)boi(0, 0, 0, 0, 0);
// если меч. над мобом
goto n;
}
if (okryga(2)==1)//просканировать круг на поиск лута или моба
{
if (mech_kyrs==1)boi(0, 0, 0, 0, 0);// если меч. над мобом
goto n;
}
}


function okryga(int n)
{
int n1;
if (Ryka_es()==1) return 1;
key(VK_DOWN); sleep(t); if (Ryka_es()==1) return 1;
n1=0; f1: if(n1<n){key(RIGHT); sleep(t); if (Ryka_es()==1) return 1; n1++; goto f1;}
n1=0; f2: if(n1<n){key(DOWN); sleep(t); if (Ryka_es()==1) return 1; n1++; goto f2;}
n1=0; f3: if(n1<n){key(DOWN); sleep(t); if (Ryka_es()==1) return 1; n1++; goto f3;}
n1=0; f4: if(n1<n){key(LEFT); sleep(t); if (Ryka_es()==1) return 1; n1++; goto f4;}
n1=0; f5: if(n1<n){key(LEFT); sleep(t); if (Ryka_es()==1) return 1; n1++; goto f5;}
n1=0; f6: if(n1<n){key(UP); sleep(t); if (Ryka_es()==1) return 1; n1++; goto f6;}
n1=0; f7: if(n1<n){key(UP); sleep(t); if (Ryka_es()==1) return 1; n1++; goto f7;}
n1=0; f8: if(n1<n){key(RIGHT); sleep(t); if (Ryka_es()==1) return 1; n1++; goto f8;}
return 0;
}


///////////////////////////////




///////////////

function Ryka_es()//Курсор как рука. над лутом
{
mech_kyrs=0;
if (findimage(1, #Ryka[0][0], 0, #PosX[0], #PosY[0], 0, 0, 640, 480, w)==1)return 1;

if (findimage(1, #Mech[0][0], 0, #PosX[0], #PosY[0], 0, 0, 780, 520, w)==1)
{
mech_kyrs=1;
if (getcolor(65, 43, w)=2169343)return 1;
}
if (findimage(1, #Skil[0][0], 0, #PosX[0], #PosY[0], 0, 0, 780, 520, w)==1)
{
mech_kyrs=1;
if (getcolor(65, 43, w)=2169343)return 1;
}
return 0;
}


///////////////////


function boi(int px, int py, int rx, int ry, int par)//Старт боя
{
if (par==0)key(RETURN);
if (par==1)mouse (LEFT, px+rx, py+ry, 1, w);//Если найдено кликнуть по центру картинки, сместив координаты клика по X и Y
sleep(p);
u: if (getcolor(528, 146, w)==4147047){key(RETURN);sleep(p);}//Если несколько мобов (табличка)
if (getcolor(366, 413, w)==3127271 && getcolor(413, 455, w)==2589631){key('1');sleep(500);}//если активен скил . деактиваровать

j: if (getcolor(618, 42, w)==12428577 && getcolor(614, 56, w)==11382189 && getcolor(619, 54, w)==3223857){sleep(50); key('1'); prov_tab(); goto j;}//Пока моб жив
LS=0;
if (LYT==1)//лут если берется пауза после смерти моба
{
jdat=0;jd: sleep(50);prov_tab();jdat++;if (jdat<30)goto jd;
}
if (getcolor(366, 413, w)==3127271 && getcolor(413, 455, w)==2589631){key('1');sleep(500);}//если активен скил . деактиваровать

if (LYT==1)//лут если берется пауза после смерти моба
{
if (Poisk_Pers==0)//0 - поиск лута начинается от точки атаки, 1 - поиск лута начинается от перса
{
if (findimage(1, #Nik[0][0], 0, #PosX[0], #PosY[0], 0, 25, 780, 520, w)==1)
{
mouse (LEFT, PosX[0]+KliK_nik_X, 25+PosY[0]+KliK_nik_Y, 1, w);//Нажать на перса
sleep(500);
}
}
}

kr=0;
t: if (okryga(kr+1)==1)//1 . скан по кругу
{
if (mech_kyrs==1)// если меч. над мобом
{
mech_kyrs=0;
key(RETURN);
sleep(500);

goto u;
}
kryg_es=0;
if (LYT==1)// если подобрать лут
{
if (mech_kyrs==0)//2// если рука
{
key(RETURN);
jdat=0;
r: if (getcolor(224, 88, w)==2209271 && getcolor(155, 63, w)==13536371)goto d;//если табличка брать лут
sleep(50);
prov_tab();
jdat++;
if (jdat<100)goto r;
else return;
d: kryg_es=1;
sleep(500);
key(RETURN);sleep(500);

if (findimage(1, #net_mesta[0][0], 0, #PosX[0], #PosY[0], 0, 0, 780, 520, w)==1)//если сумка полная
{
if (Pok_SYMK==1)messagebox ("Нет в сумке места.");
activate (w) ;
sleep(500);
prov_tab();
sleep(500);
if (getcolor(164, 452, w)==8673882 && getcolor(238, 455, w)==6150910)mouse (LEFT, 214, 453, 1, w);//Нажать закрыть в меню
}
//key(RETURN);
}//2
}
}//1
kr++;


}


//if(findimage(1, #Storona1[0][0], 0, #PosX[0], #PosY[0], 0, 0, 780, 520, w)==1){
//boi(PosX[0], PosY[0], rx1, ry1, 1);
//sleep(p);
//}





function load_image()
{
loadimage (#Image_net[0][0], "C:\warspear\net.bmp");//Кнопка нет
loadimage (#Ryka[0][0], "C:\warspear\Ryka.bmp");//Рука на луте
loadimage (#net_mesta[0][0], "C:\warspear\Netmesta.bmp");//нет в сумке мест
loadimage (#Mech[0][0], "C:\warspear\Mech.bmp");//Меч (атака)
loadimage (#Skil[0][0], "C:\warspear\Skil.bmp");//Скил (атака)
loadimage (#Nik[0][0], "C:\warspear\Nik.bmp");//Ник


loadimage (#Storona1[0][0], "C:\warspear\storona1.bmp");//Первая сторона моба
loadimage (#Storona2[0][0], "C:\warspear\storona2.bmp");//Вторая сторона моба
loadimage (#Storona3[0][0], "C:\warspear\storona3.bmp");//Третья сторона моба
loadimage (#Storona4[0][0], "C:\warspear\storona4.bmp");//Четвертая сторона моба
}
///////////////////////
function rash_image()
{
rx1=imagewidth(#Storona1[0][0])/2;
ry1=imageheight(#Storona1[0][0]);
rx2=imagewidth(#Storona2[0][0])/2;
ry2=imageheight(#Storona2[0][0]);
rx3=imagewidth(#Storona3[0][0])/2;
ry3=imageheight(#Storona3[0][0]);
rx4=imagewidth(#Storona4[0][0])/2;
ry4=imageheight(#Storona4[0][0]);
}
 
 Top
Zireael
Отправлено: 07 Февраля, 2023 - 10:28:21
Post Id



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


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




 Цитата:
Не коректно работает функция findimage

И что предлагаете делать с частью вашего кода?
Выкладывайте изображение искомой картинки и изображение, на котором это изображение присутствует. Тогда можно проверить действительно ли не находит картинку.
В findimage есть параметры точности и отклонения в цвете, используйте их, т. к. изображения могут отличаться.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by