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

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

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

> Без описания
Anthony
Отправлено: 27 Января, 2025 - 20:26:26
Post Id



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


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




Коллеги, приветствую.

После нескольких недель эксплуатации кибора возникли следующие вопросы. Если кто знает на них ответы - прошу помочь. А то что-то я совсем в ступоре...

1. Модуль FindImage

Модуль работает в целом понятно (логика ясна) и вроде вопросов не должен вызывать, но... Столкнулся с тем, что несмотря на то, что при явно указанных параметрах поиска (искать 1 объект, с указанием координат отправной точки), поиск всё равно ведётся по всем объектам на экране, подпадающие под картинку (там одноцветная текстура, 2х2 пикселя). Причём алгоритм игнорирует указанные стартовые координаты и ищет как будто-то самую дальнюю цель. Впечатление такое. Это вот как так? Это я не правильно логику понял? Тогда какова она на самом деле?

2. Рандом.

Есть ли возможность создать в визредакторе блок с несколькими true переходами? Чтобы один из них выбирался рандомно?

3. Поиск

При выборе зон на картинке, для использования потом при распознавании цели на экране, и именно фрагментов произвольной формы а не квадратом, картинки сохраняются в формате bmp, который не умеет в прозрачность. Как же оно тогда должно работать? Например, выделив по кусочкам условнвй пончик не затрагивая его середину, которая может меняться и быть например черной или белой или не важно какой, как кибор определяет, что центр не черный а любой другой? Ведь в bmp он же всегда черный?

4. Очерёдность и задержки блоков

Складывается впечатление, что в некоторых случаях следующий блок начинает работать когда еще предыдущий не закончил свою работу. Но это не точно. Возможно это следствие пункта 1. Никто такого не замечал?

5. FindImage и True/False

Я использую в некоторых случаях FindImage без действий, просто как обнаружение чего-то на экране и в зависимости от трю/фальш дальше рисую логику. Это же нормальное применение этого модуля?

Спасибо, если кто ответит.
 
 Top
Zireael
Отправлено: 28 Января, 2025 - 01:48:34
Post Id



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


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




1. Возвращаемые координаты считаются от начала зоны поиска.
Например, начало поиска 300, 200, картинка нашлась в координатах 20, 50. Значит картинка находится в координатах 320, 250. Т. е. к найденным координатам нужно прибавить координаты начала зоны поиска.
2. В блоке кода можно выполнить любые действия.
3. В FindImage есть параметр цвет фона, указанный цвет будет игнорироваться при поиске.
4. Нет такого, исключение таймер.
5. Да. Так можно.
 
 Top
Anthony
Отправлено: 28 Января, 2025 - 12:07:43
Post Id



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


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




Большое спасибо за ответ и разъяснения!

 Zireael пишет:
1. Возвращаемые координаты считаются от начала зоны поиска.
Например, начало поиска 300, 200, картинка нашлась в координатах 20, 50. Значит картинка находится в координатах 320, 250. Т. е. к найденным координатам нужно прибавить координаты начала зоны поиска.


Я имел в виду то, что кибор находит и перебирает именно все цели, которые обнаружил. А не только первую же найденную, если указано "1". У меня процедура построена так, что после обнаружения и клика по объекту процесс должен дождаться исчезновения найденного, завершиться и перейти на следующий блок, выполняющий другое действие (сбор лута), но вместо этого кликер сначала пробегается по всем остальным найденным целям и только потом переходит на выход из блока. Это вот чётко видно, как сначала всё что подпадает под картинку обрабатывается и только после того как на экране не остаётся подходящего - происходит переход дальше.

Я вот над этим голову ломаю, почему так оно себя ведёт.

Опять же, при использовании точки отсчёта (по логике - оно же нужно для обнаружения ближайших к бойцу целей, да?), вообще не факт что боец начнёт атаковать ближайшую цель, чаще всего он выбирает какую-то из отдалённых. Не понимаю, почему так... Боец находится в центре экрана. Координаты х659, у385. Оно у меня так и указано. Но он бежит к дальним целям, не начиная с ближних. Выглядит так, как будто кибор сканирует поле и выбирает первого же попавшегося, а не согласно удалению (т.е. ближайшего) от указанной в настройках точки. А затем, вместо того чтобы закончить процедуру (раз указано что ищем только 1), он оббегает всех остальных, кто уже был в зоне видимости или успели набежать пока первого бью.

На текущий момент это основная проблема и я не понимаю, что я делаю не так (.
(для просмотра ссылки Вам необходимо авторизоваться)
 Zireael пишет:
2. В блоке кода можно выполнить любые действия.


Простите, а не могли бы Вы чуть развить тему? Показать пример реализации, самый простой?

* * *

И ещё, если позволите, вопрос, но тут скорее по документации на Визуальный редактор...

Я так понял, что через Start можно заранее определять константы и переменные для последующего использования в блоках?

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

Типа Путь к файлу: "C:\BOT\AAA\image1.bmp" заменить на "C:\BOT\BBB\image1.bmp" при помощи константы например W_Kib_Location.

Пробовал W_Kib_Location=AAA в Start'е и "C:\BOT\$W_Kib_Location\image1.bmp" в блоках, но оно там не парсится и используется как обычный текст.

Такое вообще возможно? Я понимаю, что везде своя специфика и я 100% попал пальцем в небо. Я вообще не программист, ниразу и других предположений, как использовать переменные, у меня не было. Я пользуюсь исключительно визуальным редактором кода и тем, что смог понять в документации и из роликов.


* * *

Так-то я вполне приемлемо освоился в VR и то что мне нужно - научился делать, но вот такие вот нюансы сильно сбивают с толку...

Ещё раз спасибо за помощь.

(Отредактировано автором: 28 Января, 2025 - 12:17:57)

 
 Top
Zireael
Отправлено: 28 Января, 2025 - 12:31:19
Post Id



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


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




 Цитата:
после обнаружения и клика по объекту процесс должен дождаться исчезновения найденного

Скорее всего это применяется если в зоне поиска только 1 объект.
Можно паузу после клика указать и не ставить эту галку. Либо записывать в переменную сколько изначально было найдено объектов, после клика снова делать поиск и проверять уменьшилось ли их количество.
 Цитата:
Показать пример реализации, самый простой?

Что именно нужно сделать?
 Цитата:
Я пытался создать строковую константу, которую можно было бы использовать далее в путях к файлам.

CODE:
string Path = "C:\BOT\AAA\image1.bmp";
messagebox(Path);
 
 Top
Anthony
Отправлено: 28 Января, 2025 - 14:16:50
Post Id



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


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




 Zireael пишет:
Что именно нужно сделать?


Есть библиотека из 3 картинок. У каждой из картинок своя собственная обработка (раздельные алгоритмы). Нужно переходить к случайному блоку обработки одной из картинок.

Схематично: (R = рандомизатор):


[Блок 0] -> [дальше]
/
[R] - [Блок 1] -> [дальше]
\
[Блок 2] -> [дальше]


 Zireael пишет:
string Path = "C:\BOT\AAA\image1.bmp";
messagebox(Path);


А как это правильно задать через Start? и как потом вставлять переменную в нужном месте, например в пути? Не подскажете?
 
 Top
Zireael
Отправлено: 29 Января, 2025 - 01:49:16
Post Id



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


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




 Цитата:
Схематично: (R = рандомизатор):

В блоке кода:
CODE:
int random = rand(0, 3);

Переход к блоку if, в котором проверить условие random==0, если истина переход к нужному блоку, если ложь переход к следующему блоку if, в котором проверить условие random==1 и т. д.
 Цитата:
А как это правильно задать через Start?

В блоке Start:
CODE:
string Path = "C:\BOT\AAA\image1.bmp";

Там где нужно указать путь использовать переменную. Например в блоке File, вместо пути можно указать переменную Path.
 
 Top
Anthony
Отправлено: 29 Января, 2025 - 15:15:17
Post Id



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


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




 Zireael пишет:
...


Спасибо большое, буду пробовать!
 
 Top
Anthony
Отправлено: 29 Января, 2025 - 18:00:07
Post Id



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


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




 Zireael пишет:
В блоке Start:
CODE:
string Path = "C:\BOT\AAA\image1.bmp";

Там где нужно указать путь использовать переменную. Например в блоке File, вместо пути можно указать переменную Path.


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

Например, имеем структуру вложенных каталогов и файлов, у которых путь всегда начинается с C:\BOTS\kraken\img\, но далее он превращается в:

C:\BOTS\kraken\img\dir1\img1.bmp
C:\BOTS\kraken\img\dir2\img1.bmp
...
C:\BOTS\kraken\img\dirN\imgN.bmp

И было бы желательно переменной обозначать не весь путь, а только именно то, чем пути отличаются? Каталог "dir" в данном случае.

Типа:

В блоке Start
string AAA = "garg"

В блоке FindImage
Путь к файлу: C:\BOTS\kraken\img\$AAA\ну\и\всё\что\глубже

Чтобы оно преобразовывалось в C:\BOTS\kraken\img\garg\ну\и\всё\что\глубже

Просто Вы ранее написали, что нужно использовать вызов типа

messagebox(Path);

Но как его вставить в такую конструкцию я если честно не понимаю...
Ну в самом деле, не так же: C:\BOTS\kraken\img\messagebox(Path)\ну\и\всё\что\глубже

Не подскажете, такое вообще возможно? Или путь в "Путь к файлу" не парсится по частям, только целиком?

Спасибо )
 
 Top
Zireael
Отправлено: 30 Января, 2025 - 01:46:43
Post Id



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


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




CODE:
string AAA = "garg";
messagebox("C:\BOTS\kraken\img\" + AAA + "\ну\и\всё\что\глубже");

CODE:
string Path = "dir";
for(int i=1; i<4; i++)
{
messagebox("C:\BOTS\kraken\img\" + Path + format(i) + "\img1.bmp");
}
 
 Top
Anthony
Отправлено: 30 Января, 2025 - 08:21:20
Post Id



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


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




Большое спасибо, пошел пробовать!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by