Andre Lenog |
Отправлено: 14 Марта, 2015 - 14:43:43
|
Участник
Покинул форум
Сообщений всего: 65
Дата рег-ции: Март 2015
Откуда: Украина
Репутация: 0
|
Друзья, помогите разобраться как сделать чтобы в линейке (руофф) персонаж искал таргет в приделах зоны видимости а если нет то брался за радар.
Вот что у меня вышло:
CODE:
int PrivyazkaXY[14][15];//Рисунок с настройкой чата
int Vid_Mob[9][9];// неактивный кружок ( навели мышь на моба)
int Tab_Vid[183][47];// табличка о мобе/персе(без хп)
int Privyazka_Radar[210][207];(полностю радар)
int P_X[1], P_Y[1];//Переменные для принятия координат
int S_X, S_Y, F_X, F_Y;//Координаты левого верхнего и правого нижнего угла области поиска мобов на экране
int xe, ye, color;
//////////////////////////////
loadimage (#PrivyazkaXY[0][0], "C:\fyb\xy.bmp");
loadimage (#Vid_Mob[0][0], "C:\fyb\Vid_Mob.bmp");
loadimage (#Tab_Vid[0][0], "C:\fyb\tab.bmp");
loadimage (#Privyazka_Radar[0][0], "C:\fyb\radar.bmp");
////////////////////////////////////
loop:; //Основное тело программы. Крутится по кругу
Poisk_Target();//Поиск ближних мобов взятием в таргет(ф4)таргетнекст
Poisk();//Поиск мобов на экране в зоне видимости
Poisk_Radar();//Поиск на радаре
goto loop;//Зацикливаем тело программы
//....................................
function Pozicion_Image()//Расчет координат
{
gedisplay(color, xe,ye);
if (findimage(1, #PrivyazkaXY[0][0], 1, #P_X[0], #P_Y[0], 0, 0, 1365, 723, 1)==0)
{
S_X=P_X[0]; S_Y=P_Y[0]-168;//Левый верхний угол области поиска (5)
F_X=P_X[0]+1345; F_Y=P_Y[0]-168;//Правый нажний угол области поиска (5)
}
}
function Poisk_Target()//Поиск ближних мобов взятием в таргет
{
key(F4);//некст таргет
sleep(500);
if (Ataka()==1)//проверяет есть ли моб в таргете и если есть льет его. Возвращает 1 если моб был и убит
{
sleep(rand(150, 250));
key(F5);//Нажать на F4 (взять лут если есть)
sleep(rand(150, 250));
key(F5);
return 1;//Выход с функции и вернуть 1.
}
return 0;//Выход с функции и вернуть 0.
}
function Poisk()//Поиск мобов на экране
{
int n=0;
ck: if (n<k)//Цикл перебора
{
mousemove(x[n], y[n]);
sleep(200);
if (findimage(1, #Vid_Mob[0][0], 0, #P_X[0], #P_Y[0], x[n]-80, y[n]-100, x[n]+80, y[n], 1)==1)
{
mouse(LEFT, P_X[n], P_Y[n], 0);//Если найден - кликнуть мышью на мобе
}
n++;
goto ck;
}
}
function Ataka()//Проверка есть ли моб в таргете и его бой
{
if (findimage(1, #Tab_Vid[0][0], 1,#P_X[0], #P_Y[0], 1, 1, 1365, 723, 1)==0)
{
mousemove(P_X, P_Y);
}
}
P.S. функцию атака недоработал...
(Добавление)(для просмотра ссылки Вам необходимо авторизоваться) ссылка на динамику(Отредактировано автором: 14 Марта, 2015 - 14:47:03) |
|
|
Andre Lenog |
Отправлено: 14 Марта, 2015 - 15:38:55
|
Участник
Покинул форум
Сообщений всего: 65
Дата рег-ции: Март 2015
Откуда: Украина
Репутация: 0
|
Kibor , сначала ваш использовал.
теперь пытаюсь с 0 написать чтобы мне было понятно что как работает и мог добавлять что захочу
(Добавление)
Kibor , тоесть ширина_искомого_места, высота_искомого_места, объем_искомого_объекта_X, объем_искомого_объекта_Y
тут выставлять везде 9?
(Добавление)
или нужно считать обем?
(Добавление)
CODE:function Poisk()//Функция сканирования экрана на поиск изменений
{
finddynamic(0, #P_X[0], #P_Y[0], 0, 0, 0, 0, 10, 98, 1111, 606, -1);//Сделать снимок экрана.
sleep(200);
finddynamic(21, #P_X[0], #P_Y[0], 9, 9, 9, 9, 10, 98, 1111, 606, -1);//сравниваем с сохраненным изображением и ищем изменившиеся объекты, записывая их координаты.
}
вот что у меня вышло. указатель экрана -1 тк защита |
|
|
|