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

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

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

> Без описания
Budni
Отправлено: 30 Января, 2019 - 18:23:27
Post Id



Пользователь
Специалист


Покинул форум
Сообщений всего: 419
Дата рег-ции: Март 2018  
Репутация: 2





Заметил, что код из визуального редактора не всегда дает желаемый результат.
Хотелось бы писать код в ручную, но хочется быстрых результатов, читая мануал голова начинает кипеть и всё забрасывается в долгий ящик.
Данная схема из визуального редактора довольно простая и закрывает множество простых скриптов.
Прошу помочь написать шаблон в виде "ручного кода" данной схемы из Виз редактора.
 
 Top
Dantes3000
Отправлено: 30 Января, 2019 - 18:31:12
Post Id



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


Покинул форум
Сообщений всего: 1489
Дата рег-ции: Июнь 2016  
Репутация: 58




Все findheapcolor одинаковые? Что делают textout?
 
 Top
Budni
Отправлено: 30 Января, 2019 - 18:52:41
Post Id



Пользователь
Специалист


Покинул форум
Сообщений всего: 419
Дата рег-ции: Март 2018  
Репутация: 2




 Dantes3000 пишет:
Все findheapcolor одинаковые? Что делают textout?

Это как шаблон, просто чтобы понять как строить. Так да одинаковые (но вообще хочу разные, чтобы понять как делать так чтобы конфликта не было между ними). textout показывает найден объект или нет.

(Отредактировано автором: 30 Января, 2019 - 18:55:46)

 
 Top
Dantes3000
Отправлено: 30 Января, 2019 - 19:00:11
Post Id



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


Покинул форум
Сообщений всего: 1489
Дата рег-ции: Июнь 2016  
Репутация: 58




 Budni пишет:
Это как шаблон, просто чтобы понять как строить. Так да одинаковые

Ошибка в логике тогда, если первый и второй findheapcolor одинаковые.

Обьясни что скрипт должен делать.

Если просто искать обьект и выводить на экран, то вот так:
CODE:
loop()
{

if(find_heap1()>0) textout(0, 100, 100, "true", 0);
else textout(0, 100, 100, "false", 1);

}



function find_heap1()
{
int min_col=3;//Найти если все три цвета
//int min_col = 2;//Достаточно только любых 2

int r=10;
int color[3];
color[0]=2366701; color[1]=5026082; color[2]=13387839;//Тут цвета
int kol[3];
kol[0]=55; kol[1]=55; kol[2]=55;//Тут сколько должно совпасть пикселей для каждого цвета
int x[50], y[50];//Тут координаты найденные
sleep(500);
int colors, xw, yw;
getdisplay(colors, xw, yw);
int k=findheapcolor(20, #color[0], #kol[0], 3, min_col, #x[0], #y[0], 15, 15, 50, 50, 0, 0, xw, yw, r, r, r, r, r, r, -1);

return k;
}
 
 Top
Budni
Отправлено: 30 Января, 2019 - 19:39:32
Post Id



Пользователь
Специалист


Покинул форум
Сообщений всего: 419
Дата рег-ции: Март 2018  
Репутация: 2




Dantes3000 , Интересует именно логика. Шаблон, в который я могу занести любые данные.

заместо текстаут может быть любой код, например нажатие клавиши.

Если словами код написать то так вот

 Цитата:
start:
Найти объект if{ Нажать на него если найден} goto Proverka;
repit: else {нажать клавишу или выполнить другой код} goto start;

Proverka:
проверяем корректность клика if {Объект найден} goto repit;
else {Не найден объект} goto start;

TIMER{
Ожидать объект в по координатам 100 100 100 100
Если появился, проветрить отсутствие объект номер 2
Если объект номер 2 нет проверить объект 3
Если 3 объект не появился то нажать кнопки
X
wait 1000ms
Z
}

(Отредактировано автором: 30 Января, 2019 - 19:41:29)

 
 Top
Dantes3000
Отправлено: 30 Января, 2019 - 19:50:04
Post Id



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


Покинул форум
Сообщений всего: 1489
Дата рег-ции: Июнь 2016  
Репутация: 58




Budni , Честно, я пытался. Логика вообще непонятная.
Вышло такое, без таймера.
Слишком абстрактные требования

CODE:
st:;

if(find_object()==1) //если найден обьек - клик на него
{
if(check_correct()==1) messagebox("{Найден объект}");
else {messagebox("{Не найден объект}"); goto st;}
}
else func();

goto st;



function find_object()
{
int min_col=3;//Найти если все три цвета
//int min_col = 2;//Достаточно только любых 2

int r=10;
int color[3];
color[0]=2366701; color[1]=5026082; color[2]=13387839;//Тут цвета
int kol[3];
kol[0]=55; kol[1]=55; kol[2]=55;//Тут сколько должно совпасть пикселей для каждого цвета
int x[50], y[50];//Тут координаты найденные
sleep(500);
int colors, xw, yw;
getdisplay(colors, xw, yw);
int k=findheapcolor(20, #color[0], #kol[0], 3, min_col, #x[0], #y[0], 15, 15, 50, 50, 0, 0, xw, yw, r, r, r, r, r, r, -1);

if(k>0) {mouse(LEFT, x[0], y[0]; return 1;}
else return 0;
}


function check_correct()
{
//проверка корректности
}
 
 Top
Zireael
Отправлено: 30 Января, 2019 - 20:05:25
Post Id



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


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




 Цитата:
Интересует именно логика. Шаблон, в который я могу занести любые данные.

Лучше начать с простых конструкций, чтобы понять как это работает.
CODE:
if(find()>0) // в зависимости от того что вернула функция, выполнится или не выполнится дальнейший код
{
messagebox("Выполнить какое-то действие");
}
else
{
messagebox("Ничего не делать");
}


function find() // функция
{
// тут могут быть любые действия
int X;
//X=findheapcolor(...); // например, findheapcolor, который запишет в переменную X количество найденных объектов

X=3; // допустим нашлось 3 объекта
if(X>0)return 1; // если X больше 0, то функция вернёт 1
return 0; // иначе вернёт 0
}

goto вообще не часто нужен, если правильно продумать логику.
 
 Top
Budni
Отправлено: 30 Января, 2019 - 23:36:35
Post Id



Пользователь
Специалист


Покинул форум
Сообщений всего: 419
Дата рег-ции: Март 2018  
Репутация: 2




Zireael ,
 Цитата:
int r=20; // разбежность
int color[1]={263335}; // цвета
int kol[1]={1}; // количество
int x[10], y[10]; // координаты
sleep(500);

loop() {
if(find()>0) // в зависимости от того что вернула функция, выполнится или не выполнится дальнейший код
{
messagebox("Выполнить какое-то действие");
}
else
{
messagebox("Ничего не делать");
}
}
function find() // функция
{
int X;
X=findheapcolor(1, #color[0], #kol[0], sizearray(color), 1, #x[0], #y[0], 1, 1, 1, 1, 374, 278, 432, 337, r, r, r, r, r, r, -1);
if(X>0)return 1; // если X больше 0, то функция вернёт 1

Отлично, стало понятнее, а как добавить сюда поиск других картинок? Для других функцией? Переменные color нужно называть как color2 или как то более грамотно делается это?

(Отредактировано автором: 30 Января, 2019 - 23:41:28)

 
 Top
Zireael
Отправлено: 30 Января, 2019 - 23:59:28
Post Id



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


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




Зачем использовать findheapcolor для поиска 1 пикселя? Проще findimage.
 Цитата:
int x[10], y[10]; // координаты

Массивы для 10 координат, а ищется только 1 объект. Можно объявить: int x, y;
в findheapcolor вместо #x[0] #x.
 Цитата:
а как добавить сюда поиск других картинок? Для других функцией?

Если имеется ввиду findheapcolor, то другая функция. Если, к примеру, findimage, то функция одна, просто в неё передавать нужные параметры.
 Цитата:
Переменные color нужно называть как color2 или как то более грамотно делается это?

Если переменные будут в самой функции, то можно те же самые. Иначе другие.
 
 Top
Budni
Отправлено: 31 Января, 2019 - 02:31:07
Post Id



Пользователь
Специалист


Покинул форум
Сообщений всего: 419
Дата рег-ции: Март 2018  
Репутация: 2




 Zireael пишет:
Зачем использовать findheapcolor для поиска 1 пикселя? Проще findimage.
Почему проще? Быстрее находить будет?

Ещё вопрос: На экране 10 объектов, размером 1 пх, нужно по очереди на них нажать, но перед этим дождаться исчезновения объекта на который был совершен клик. Сложность в том что объекты двигаются. Как лучше решить этот вопрос?
1) Просто искать по 1му объекту - нажать и дождаться когда исчезнет. Или
2) Найти все сразу и как то по очереди их нажать?


(Добавление)
 Zireael пишет:
Массивы для 10 координат, а ищется только 1 объект. Можно объявить: int x, y;
в findheapcolor вместо #x[0] #x.

А если я захочу совершить клик по найденной координате то mouse(LEFT, x, y)? Они сюда запишутся?
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 7 (гостей: 7, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by