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

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

 Страниц (13): « 1 [2] 3 4 5 6 7 8 9 » В конец    

> Описание: Не могу понять как высчитывать координаты точек
Barabachka
Отправлено: 30 Сентября, 2013 - 16:19:00
Post Id



Пользователь
Участник


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




Соскринил я свою табличку
моя табличка
Ваша табличка
Смотрю что там есть динимическое изображение и название мобов. Решил что нужно залить это, и залил в паинте черным, оставил только то что у вас на изображении.
В игре не прокатило, пишет что не найден в игре рисунок.
Заменил на Ваше изображение и сразу все пошло.
Ваш секрет приготовления изображения?
Рисунки не коректны, забыл что добавляет изображение сайт, но разница Вам будет понятна

(Отредактировано автором: 30 Сентября, 2013 - 16:21:04)

 
 Top
Kibor
Отправлено: 30 Сентября, 2013 - 16:52:56
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8098
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




Не пошло потому что в скрипте выделено памяти под рисунок 166 39. int Tab_Vid[166][39];
Ваш рисунок больше. Ошибка. Смотрим тему эту.

Рисунки все делаются через встроенный редактор, а не паинт. так проще и надежнее.

Выделили моба в игре, перешли на вкладку Графика в Кибор, мышь на игру и нажали Ctrl+Shift+S, свернули Кибор.
Нажали Ctrl+Shift+A (запустить фильтр динамики.) Побегали. Нажали Ctrl+Shift+A (остановить фильтр динамики.)
Развернуть Кибор. Видим все пикселя что динамичные красные.
Теперь аналогично этому видео выделяем некоторые участки таблички, которые не имеют красный цвет. Полоску хп не стоит выделять. Нажимаем правую кнопку мыши и сохраняем рисунок. Фоновый цвет сам зальет все не выделенное.
Автоматически получаем функцию загрузки изображения и поиска.
 
 Top
Barabachka
Отправлено: 30 Сентября, 2013 - 17:11:34
Post Id



Пользователь
Участник


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




 Kibor пишет:
Не пошло потому что в скрипте выделено памяти под рисунок 166 39. int Tab_Vid[166][39];

Вот про размер я не забыл, а редактором наверно криво воспользовался Закатив глазки
(Добавление)
Да вы кудесник товарищ Kibor!
У меня просто куча идей появилась. Только когда их реализовывать хз.
 
 Top
Barabachka
Отправлено: 30 Сентября, 2013 - 19:40:37
Post Id



Пользователь
Участник


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




Халп! Что-то с кодом. Прошу вас глянуть, этот момент он пролетает
CODE:
function Ataka()//Бой моба когда он в таргете. Заодно проверяется или это моб и есть ли у него XP
{
if (getcolor(P_T_X[0]+18, P_T_Y[0]+22)==1251183 && getcolor(P_T_X[0], P_T_Y[0]+37)==11057346 && getcolor(P_T_X[0]+1, P_T_Y[0]+37)==7637144 && getcolor(P_T_X[0]+1, P_T_Y[0]+38)==11649225 && getcolor(P_T_X[0]+165, P_T_Y[0]+22)==1251183);//Если моб в таргете не убит и нет по нему дамага.
{
Clic_Mouse(Fk_X[1], Fk_Y[1]);//Жмем F1 атака
sleep(50);
ypor=0;//Обнулить счетчик циклов за которые моб должен быть убит
b: if (getcolor(P_T_X[0]+18, P_T_Y[0]+22)==1251183 && getcolor(P_T_X[0], P_T_Y[0]+37)==11057346 && getcolor(P_T_X[0]+1, P_T_Y[0]+37)==7637144 && getcolor(P_T_X[0]+1, P_T_Y[0]+38)==11649225);//Если моб в таргете и не убит
{
ypor++;//Увеличиваем счетчик циклов боя моба
if (ypor>4)==(getcolor(P_T_X[0]+18, P_T_Y[0]+22)==1251183 && getcolor(P_T_X[0], P_T_Y[0]+37)==11057346 && getcolor(P_T_X[0]+1, P_T_Y[0]+37)==7637144 && getcolor(P_T_X[0]+1, P_T_Y[0]+38)==11649225 && getcolor(P_T_X[0]+165, P_T_Y[0]+22)==1251183);//Если моб не убит более чем за 4 цикла и небыло дамага по нему.
{
Clic_Mouse(Zak_T_X, Zak_T_Y);//Снимаем таргет
ypor=0;
return 2;//Возвращием 2. Поиск дальше другим алгоритмом. Выход с перебора
}
Clic_Mouse(Fk_X[1], Fk_Y[1]); //Жмем F1 атака
sleep(rand(1300, 1400));//Ждем
goto b;//Идем назад проверять наличие тиблички моба в таргете с первым красным пикселем его XP.
}
return 1;//Возвращием 1. Удачно выполненная функция. Программа перейдет в начало.
}
return 0;//Возвращием 0. Признак провала. Будем перебирать дальше.
}

(Добавление)
А здесь зависает на F6
CODE:
function Poisk_Target()//Искать мобов next, перебор макросов.
{
sleep(200);
Clic_Mouse(Fk_X[7], Fk_Y[7]);//Пытаемся взять в таргет ближнего
sleep(rand(300, 400));
if (getcolor(P_T_X[0]+18, P_T_Y[0]+22)==1251183 && getcolor(P_T_X[0], P_T_Y[0]+37)==11057346 && getcolor(P_T_X[0]+1, P_T_Y[0]+37)==7637144 && getcolor(P_T_X[0]+1, P_T_Y[0]+38)==11649225)==Clic_Mouse(Fk_X[7], Fk_Y[7]);
{
if (Ataka()==1){sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]);); return 1;}//Если взяли , атаковали и убили
else
{
Clic_Mouse(Fk_X[5], Fk_Y[5];//Пытаемся взять в таргет макрос
sleep(rand(300, 400));
if (Ataka()==1){sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]);); return 1;}//Если взяли , атаковали и убили
}
}
else
{
Clic_Mouse(Fk_X[6], Fk_Y[6];//Пытаемся взять в таргет макрос
sleep(rand(300, 400));
if (Ataka()==1){sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]);); return 1;}//Если взяли , атаковали и убили
}
else
{
Clic_Mouse(Fk_X[8], Fk_Y[8];//Пытаемся взять в таргет макрос
sleep(rand(300, 400));
if (Ataka()==1){sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]);); return 1;}//Если взяли , атаковали и убили
}
else
{
Clic_Mouse(Fk_X[9], Fk_Y[9];//Пытаемся взять в таргет макрос
sleep(rand(300, 400));
if (Ataka()==1){sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]);); return 1;}//Если взяли , атаковали и убили
}
return 0;
}
 
 Top
Kibor
Отправлено: 30 Сентября, 2013 - 20:07:03
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8098
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




 Barabachka пишет:
function Ataka()//Бой моба когда он в таргете. Заодно проверяется или это моб и есть ли у него XP
{
if (getcolor(P_T_X[0]+18, P_T_Y[0]+22)==1251183 && getcolor(P_T_X[0], P_T_Y[0]+37)==11057346 && getcolor(P_T_X[0]+1, P_T_Y[0]+37)==7637144 && getcolor(P_T_X[0]+1, P_T_Y[0]+38)==11649225 && getcolor(P_T_X[0]+165, P_T_Y[0]+22)==1251183);//Если моб в таргете не убит и нет по нему дамага.
{
Clic_Mouse(Fk_X[1], Fk_Y[1]);//Жмем F1 атака
sleep(50);
ypor=0;//Обнулить счетчик циклов за которые моб должен быть убит
b: if (getcolor(P_T_X[0]+18, P_T_Y[0]+22)==1251183 && getcolor(P_T_X[0], P_T_Y[0]+37)==11057346 && getcolor(P_T_X[0]+1, P_T_Y[0]+37)==7637144 && getcolor(P_T_X[0]+1, P_T_Y[0]+38)==11649225);//Если моб в таргете и не убит
{
ypor++;//Увеличиваем счетчик циклов боя моба
if (ypor>4)==(getcolor(P_T_X[0]+18, P_T_Y[0]+22)==1251183 && getcolor(P_T_X[0], P_T_Y[0]+37)==11057346 && getcolor(P_T_X[0]+1, P_T_Y[0]+37)==7637144 && getcolor(P_T_X[0]+1, P_T_Y[0]+38)==11649225 && getcolor(P_T_X[0]+165, P_T_Y[0]+22)==1251183);//Если моб не убит более чем за 4 цикла и небыло дамага по нему.
{
Clic_Mouse(Zak_T_X, Zak_T_Y);//Снимаем таргет
ypor=0;
return 2;//Возвращием 2. Поиск дальше другим алгоритмом. Выход с перебора
}
Clic_Mouse(Fk_X[1], Fk_Y[1]); //Жмем F1 атака
sleep(rand(1300, 1400));//Ждем
goto b;//Идем назад проверять наличие тиблички моба в таргете с первым красным пикселем его XP.
}
return 1;//Возвращием 1. Удачно выполненная функция. Программа перейдет в начало.
}
return 0;//Возвращием 0. Признак провала. Будем перебирать дальше.
}




 Barabachka пишет:
function Poisk_Target()//Искать мобов next, перебор макросов.
{
sleep(200);
Clic_Mouse(Fk_X[7], Fk_Y[7]);//Пытаемся взять в таргет ближнего
sleep(rand(300, 400));
if (getcolor(P_T_X[0]+18, P_T_Y[0]+22)==1251183 && getcolor(P_T_X[0], P_T_Y[0]+37)==11057346 && getcolor(P_T_X[0]+1, P_T_Y[0]+37)==7637144 && getcolor(P_T_X[0]+1, P_T_Y[0]+38)==11649225)==Clic_Mouse(Fk_X[7], Fk_Y[7]);
{
if (Ataka()==1){sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]);); return 1;}//Если взяли , атаковали и убили
else
{
Clic_Mouse(Fk_X[5], Fk_Y[5];//Пытаемся взять в таргет макрос
sleep(rand(300, 400));
if (Ataka()==1){sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]);); return 1;}//Если взяли , атаковали и убили
}
}
else
{
Clic_Mouse(Fk_X[6], Fk_Y[6]нет скобки;//Пытаемся взять в таргет макрос
sleep(rand(300, 400));
if (Ataka()==1){sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]);); return 1;}//Если взяли , атаковали и убили
}
else
{
Clic_Mouse(Fk_X[8], Fk_Y[8];//Пытаемся взять в таргет макрос
sleep(rand(300, 400));
if (Ataka()==1){sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]);); return 1;}//Если взяли , атаковали и убили
}
else
{
Clic_Mouse(Fk_X[9], Fk_Y[9]скобки нет;//Пытаемся взять в таргет макрос
sleep(rand(300, 400));
if (Ataka()==1){sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]); sleep(rand(350, 450)); Clic_Mouse(Fk_X[4], Fk_Y[4]);); return 1;}//Если взяли , атаковали и убили
}
return 0;
}


Красным синтаксические ошибки.
Пишите по строчке одной, будет легче отследить. Потом как отладите код можно в одну записать.
 
 Top
Barabachka
Отправлено: 01 Октября, 2013 - 21:09:27
Post Id



Пользователь
Участник


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




Появился такой вопросик.
Прочел вот это Ваше пособие
Нашол в вашем скрипте вот такое
CODE:
function Ataka()//Бой моба когда он в таргете. Заодно проверяется или это моб и есть ли у него XP
{
if (getcolor(P_T_X[0]+18, P_T_Y[0]+22)==1251183 && getcolor(P_T_X[0], P_T_Y[0]+37)==11057346 && getcolor(P_T_X[0]+1, P_T_Y[0]+37)==7637144 && getcolor(P_T_X[0]+1, P_T_Y[0]+38)==11649225)//Если моб в таргете и не убит
{
Clic_Mouse(Fk_X[1], Fk_Y[1]);//Жмем F1 атака
sleep(50);
ypor=0;//Обнулить счетчик циклов за которые моб должен быть убит
b: if (getcolor(P_T_X[0]+18, P_T_Y[0]+22)==1251183 && getcolor(P_T_X[0], P_T_Y[0]+37)==11057346 && getcolor(P_T_X[0]+1, P_T_Y[0]+37)==7637144 && getcolor(P_T_X[0]+1, P_T_Y[0]+38)==11649225)//Если моб в таргете и не убит
{
ypor++;//Увеличиваем счетчик циклов боя моба
if (ypor>10)//Если моб не убит более чем за 15 сек.
{
Clic_Mouse(Zak_T_X, Zak_T_Y);//Снимаем таргет
ypor=0;
Cikl();// Пытаемся выйти со ступора сдвигом
return 2;//Возвращием 2. Поиск дальше другим алгоритмом. Выход с перебора
}
Clic_Mouse(Fk_X[1], Fk_Y[1]); //Жмем F1 атака
sleep(rand(2000, 2100));//Ждем
goto b;//Идем назад проверять наличие тиблички моба в таргете с первым красным пикселем его XP.
}
return 1;//Возвращием 1. Удачно выполненная функция. Программа перейдет в начало.
}
return 0;//Возвращием 0. Признак провала. Будем перебирать дальше.
}

Вот эта строка не до конца мне понятна
CODE:
return 2;//Возвращием 2. Поиск дальше другим алгоритмом. Выход с перебора

return 2;// это выход полностью с "function Ataka()" и переход на дальнейшую функцию зацикленую в теле программы?
Или может переход в дальнейшую строку функции в которой использовалась "function Ataka()" ?
(Добавление)
Да, это с скрипта бота La2 для Windows 7 64.
 
 Top
Kibor
Отправлено: 01 Октября, 2013 - 22:15:56
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8098
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




Просто return - выход из функции и переход на следующую строку.
Если после return стоит возвращаемое значение - выход из функции назад в строку которая вызывала функцию. Только вместо вызываемой функции становится то что она возвращает после return.

Пояснение:
Если return возвращает что то:
CODE:
int a=5;
int b=7;

int c=summa();
messagebox (c);

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

function summa()
{
return a+b;
}


то после возврата код будет выполняться с этой строи и будет иметь такой вид:

CODE:
int c=a+b;
messagebox (c);


А если не возвращает (после return нет ничего), то сразу выполнится строка:
CODE:
messagebox (c);
 
 Top
Barabachka
Отправлено: 01 Октября, 2013 - 23:47:25
Post Id



Пользователь
Участник


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




Упёрся в стенку принцип вроде как ясен но не пойму как работает в моем случае Упёрся в стенку
 
 Top
Kibor
Отправлено: 02 Октября, 2013 - 02:57:34
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8098
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




Тут я не знаю. Скажу только что в чужом коде сложно разобраться, особенно если не все понятно. Лучше понять принцип работы Кибор и его языка и построить свой код.
 
 Top
Nikolo12
Отправлено: 02 Октября, 2013 - 09:32:09
Post Id



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


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




Поясните по данному скрипту
 Цитата:
if (getcolor(P_T_X[0]+18, P_T_Y[0]+22)==1251183 && getcolor(P_T_X[0], P_T_Y[0]+37)==11057346 && getcolor(P_T_X[0]+1, P_T_Y[0]+37)==7637144 && getcolor(P_T_X[0]+1, P_T_Y[0]+38)==11649225)//Если моб в таргете и не убит

идет проверка цвета полосы НР моба в нескольких точках одновременно?
 Цитата:
Clic_Mouse(Fk_X[1], Fk_Y[1]);//Жмем F1 атака

Вызов процедуры Clic_Mouse(); ?
А если просто key(F1); ?

(Отредактировано автором: 02 Октября, 2013 - 09:33:57)

 
 Top
Страниц (13): « 1 [2] 3 4 5 6 7 8 9 » В конец
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by