/////////////////////////////////////////////////////
function poisk_null()
{
k=Poisk();//Искать всю динамику на экране игры
if (k>49)//Развернуть (много динамики. шум)
{
razvorot_obxod=0;
Cikl1();
Poisk_Radar();
target();
}
sort();//Сортировка по растоянию Моб-Персонаж
if (k>25)k=25;//Оставить 25 ближних
if (Perebor_Mobov()==1)
{
sleep(rand(150, 250));
target();
}//Перебрать динамику в цикле и если моб атаковать
Poisk_Radar();
target();
razvorot_obxod++;//Счетчик необходимости разворота увеличиваем
if (razvorot_obxod>1)//Развернуться
{
razvorot_obxod=0;
Cikl1();//Функция разворота
}
sleep(200);
target();
}
/////////////////////////////////////////////////////
function Perebor_Mobov()//Перебор всех динамичных объектов на экране
{
int n=0;
ck: if (n<k)//1//Цикл перебора найденых анимированных участков
{
TX=S_X+x[n]; TY=S_Y+y[n];
Trysit_Mouse(TX, TY);//Потрусить мышью над мобом
if (findimage(1, #Vid_Mob[0][0], 0, #V_M_X[0], #V_M_Y[0], TX-80, TY-100, TX+80, TY,
wind)==1)//Проверяем появление кружочка над объектом. Он появляется над мобами и т.д.
{
mousedbl(LEFT, TX, TY, 0, wind);//Кликнуть на объекте
sleep(200);
target(); //Идем проверять или это точно моб и если моб бьем его
}
n++;
goto ck;
}//1
}
/////////////////////////////////////////////////////
function Trysit_Mouse(int x, int y)//Потрусить мышью над мобом
{
mousemove(x, y, wind); sleep(50);
mousemove(x-1, y, wind); sleep(50);
mousemove(x, y-1, wind); sleep(50);
mousemove(x+1, y, wind); sleep(50);
mousemove(x, y+1, wind); sleep(50);
mousemove(x, y, wind); sleep(50);
}
/////////////////////////////////////////////////////
function Poisk()//Сканируем экран на наличие динамики (мобов и т. д.)
{
finddynamic(0, #x[0], #y[0], 0, 0, 0, 0, S_X, S_Y, F_X, F_Y, wind);//Получить изображение
игры
sleep(payza_sravn);//Пауза между сравнением для поиска изменений
finddynamic(50, #x[0], #y[0], Mob_X, Mob_Y, Raz_Din_X, Raz_Din_Y, S_X, S_Y, F_X, F_Y,
wind);//Получить изображение игры и сравнить с прошлым. Получить координаты динамичных
объектов.
}
/////////////////////////////////////////////////////
function Cikl()//Изменяем положение перса или разворачиваем его для выхода из столбняка.
{
mouse(LEFT, c_X+rand(150, 200), c_Y+rand(150, 200), 0, wind);
sleep(rand(700, 1200));
target();
mouse(LEFT, c_X+rand(150, 200), c_Y-rand(150, 200), 0, wind);
sleep(rand(700, 1200));
target();
mouse(LEFT, c_X-rand(150, 200), c_Y-rand(150, 200), 0, wind);
sleep(rand(700, 1200));
target();
mouse(LEFT, c_X-rand(150, 200), c_Y+rand(150, 200), 0, wind);
sleep(rand(700, 1200));
target();
}
/////////////////////////////////////////////////////
function Cikl1()
{
sendkey(END, wind);//нажать среднюю кнопку разворот
sleep(2000);
target();
attack();
}
/////////////////////////////////////////////////////
function sort()//Сортировка по растоянию Моб-Персонаж (пузырьковая сортировка)
{
int rast, rast1, rsX, rsY, n, n1, t_x, t_y;
n=0;
pr: if (n<k)
{
//////////
n1=k-1;
pr1: if (n1>n)
{
/////////
rsX=x[n1-1]-(c_X-S_X); rsY=y[n1-1]-(c_Y-S_Y); rast=(rsX*rsX)+(rsY*rsY);
rsX=x[n1]-(c_X-S_X); rsY=y[n1]-(c_Y-S_Y); rast1=(rsX*rsX)+(rsY*rsY);
if (rast>rast1)
{
t_x=x[n1-1];t_y=y[n1-1];
x[n1-1]=x[n1];y[n1-1]=y[n1];
x[n1]=t_x;y[n1]=t_y;
}
/////////
n1--;
goto pr1;
}
//////////
n++;
goto pr;
}
}
/////////////////////////////////////////////////////
function nastroitclient()
{
getdisplay(col, xek, yek);//Определить какое разрешение
xek=xek/2-200; yek=yek/2;//Вывод текста по эти координатам. центр
textbkcolor (0,8421631);//Установка цвета текста
textout(0, xek, yek, "Жми F12", 0);
hu: if (getkeystate(123)==0){sleep(20); goto hu;}
sleep(200);
getmouse(kX, kY);
wind=getwindow(1, kX, kY);
pause (1000);//Пауза что бы успел отпустить кнопку
wind.widthclient=1280;
wind.heightclient=768;
moveclient(wind);
textout(0, xek, yek, "", 2);
resettextout(1);
textbkcolor (0,65280);//Установка цвета текста
}
///////////////////////////////////////////////////////////////////////
function Load_Image()//Грузятся рисунки
{
if (loadimage (#Image_0[0][0], "C:\Kibor\allbts\nachalo_hp.bmp"
==-1)return -1;
if (loadimage (#Image_1[0][0], "C:\Kibor\allbts\konec_hp.bmp"
==-1)return -1;
if (loadimage (#Image_2[0][0], "C:\Kibor\allbts\hp.bmp"
==-1)return -1;
if (loadimage (#Image_3[0][0], "C:\Kibor\allbts\mp.bmp"
==-1)return -1;
if (loadimage (#PrivyazkaXY[0][0], "C:\Kibor\allbts\chat.bmp"
==-1)return -1;
if (loadimage (#Vid_Mob[0][0], "C:\Kibor\allbts\t_mob.bmp"
==-1)return -1;
if (loadimage (#Privyazka_Radar[0][0], "C:\Kibor\allbts\radar12.bmp"
==-1)return -1;
return 0;
}
///////////////////////////////////////////////////////////////////////
function Pozicion_Image()//Узнать позиции рисунков на экране для обозначения координат
окна игры и необходимых элементов для работы бота
{
int xe, ye, color;
getdisplay(color, xe,ye);//Знать разрешение экрана
if (findimage(1, #PrivyazkaXY[0][0], 0, #P_X[0], #P_Y[0], 0, 0, xe, ye, wind)==0)
{messagebox("Не найден в игре рисунок кнопки настройки чата. Позиция не определена."
;
return -1;}
S_X=P_X[0]; S_Y=P_Y[0]-605;//Левый верхний угол игрового поля
F_X=P_X[0]+1266; F_Y=P_Y[0]-160;//Правый нижний угол игрового поля
c_X=S_X+630; c_Y=S_Y+360;//Центр поля (позиция игрока)
if (findimage(1, #Privyazka_Radar[0][0], 0, #P_R_X[0], #P_R_Y[0], 0, 0, xe, ye, wind)==0)
{messagebox("Не найден в игре рисунок кнопки настройка радара. Включите радар и повторите
попытку."
; return -1;}
R_X=P_R_X[0]-78; R_Y=P_R_Y[0]+74;//Координаты центра радара (позиция игрока)
R_S_X=P_R_X[0]-123; R_S_Y=P_R_Y[0]+20;//Координаты левого верхнего угра радара
R_F_X=P_R_X[0]-33; R_F_Y=P_R_Y[0]+125;//Координаты нижнего правого угра радара
}
//1267, 15 // molotok
//1234, 140 // priviy
//1144, 32 // leviy
//1189, 89 // centr
///////////////////////////////////////////////////////////////////////