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

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

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

> Без описания
Kwaga
Отправлено: 16 Марта, 2022 - 00:06:07
Post Id



Пользователь
Наблюдатель


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




Приветствую!
Гуру помогите пожалуйста, есть инвентарь, нужно посчитать количество слотов свободных и записать это в какую то переменную, что бы потом использовать это количество для цикла loop.
Логика такая:
1. Перемещаю мышку в правый нижний угол каждого слота
2. Слот подсвечивается белым цветом
3. ScanPixel проверяет центр слота
4. Если он пустой будет белый цвет, соответственно свободен (записываем +1 к количеству свободных слотов)
5. Если слот не белый значит занят(ничего не записываем к количеству свободных слотов)
Не хватает знаний пока что((( Пытаюсь это сделать в визуальном редакторе.
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
 
 Top
Zireael
Отправлено: 16 Марта, 2022 - 01:58:02
Post Id



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


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




Проще через findimage искать изображение пустого слота. Функция вернёт количество.
 
 Top
Kwaga
Отправлено: 16 Марта, 2022 - 02:02:20
Post Id



Пользователь
Наблюдатель


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




 Zireael пишет:
Проще через findimage искать изображение пустого слота. Функция вернёт количество.

Там фон полупрозрачный((
И из за этого пустой слот все время выглядит по разному в зависимости от происходящего на экране. Только при наведении мышки подсветка белым, слота, детектится всегда четко.

(Отредактировано автором: 16 Марта, 2022 - 02:05:33)

 
 Top
Zireael
Отправлено: 16 Марта, 2022 - 02:29:44
Post Id



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


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




 Цитата:
Там фон полупрозрачный

Для этого в findimage есть параметр разбежность цвета. Подобрать можно во вкладке графика, фильтр динамики.

(Отредактировано автором: 16 Марта, 2022 - 02:30:15)

 
 Top
Kwaga
Отправлено: 16 Марта, 2022 - 03:53:36
Post Id



Пользователь
Наблюдатель


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




 Zireael пишет:
 Цитата:
Там фон полупрозрачный

Для этого в findimage есть параметр разбежность цвета. Подобрать можно во вкладке графика, фильтр динамики.

Спасибо.
Я просто полагал что фильтр динамики для движущихся объектов.
Update.
Попробовал, очень долго ищет иногда даже Кибор зависает). В общем не добиться 100% детекта при разном заднем фоне(
(Добавление)
К тому же не понятно какой кусок вырезать и как искать, если например слот занят.
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]

(Отредактировано автором: 16 Марта, 2022 - 04:12:40)

 
 Top
Kibor
Отправлено: 16 Марта, 2022 - 08:07:18
Post Id



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


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




Пройтись в цикле по каждой ячейке такой функцией.

CODE:
pause(1000);
int r=70;


//593, 590 это координаты каждой ячейки в точке указанной на рисунке
if (scan_slot(593, 590)==1)messagebox ("Слот не пустой");
else messagebox ("Слот пустой");

function scan_slot(int стартx, int стартy)
{
int финишx=стартx+40, финишy=стартy+40;
if (sumcolor(-1, стартx, стартy, финишx, финишy, 4866368, r, r, r, r, r, r, -1)<1600) return 1;
else return 0;
}




Нажмите для увеличения
 
 Top
Kwaga
Отправлено: 16 Марта, 2022 - 10:50:39
Post Id



Пользователь
Наблюдатель


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




 Kibor пишет:
Пройтись в цикле по каждой ячейке такой функцией.

CODE:
pause(1000);
int r=70;


//593, 590 это координаты каждой ячейки в точке указанной на рисунке
if (scan_slot(593, 590)==1)messagebox ("Слот не пустой");
else messagebox ("Слот пустой");

function scan_slot(int стартx, int стартy)
{
int финишx=стартx+40, финишy=стартy+40;
if (sumcolor(-1, стартx, стартy, финишx, финишy, 4866368, r, r, r, r, r, r, -1)<1600) return 1;
else return 0;
}




Нажмите для увеличения


Спасибо за участие.
Я возможно не правильно описал проблему.
Проблема в том что предмет в слоте может быть любым, как и фон за ячейками, так как он прозрачный.
Я примерно понял как проверять каждую ячейку. Но как я и писал в первом посте, единственный вариант на 100% определить пустая она или нет - это навести на нее мышку, тогда она заливается белым цветом и scanpixel четко определяет это. Единственное моих знаний пока что не хватает, как мне пройдясь по каждой ячейки и определив количество свободных записать это в какую то переменную что бы потом ее использовать в loop.
 
 Top
Kibor
Отправлено: 16 Марта, 2022 - 10:59:06
Post Id



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


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




 Kwaga пишет:
Проблема в том что предмет в слоте может быть любым, как и фон за ячейками, так как он прозрачный.

Это понятно.
Что бы понять какую ставить разбежность надо сделать 2 скрина. Один когда под ячейками самый светлый цвет фона. Второй самый темный. Тут стоит разбежность 70, что в принципе должно сработать на любом фоне и не пропустить какой то объект в ячейке.
А как обойти все ячейки? В цикле, подставляя координаты каждой ячейки в точке на скрине..

CODE:
//Таблица 5 на 3
int X[5]={100, 170, 240, 310, 380}//Координаты по x
int Y[3]={200, 270, 340}//Координаты по y

for (int x=0; x<5; x++)
{
for (int y=0; y<3; y++)
{
if (scan_slot(X[x], Y[y])==1)messagebox ("Слот не пустой");
else messagebox ("Слот пустой");
}
}
 
 Top
Kwaga
Отправлено: 16 Марта, 2022 - 11:01:34
Post Id



Пользователь
Наблюдатель


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




 Kibor пишет:
 Kwaga пишет:
Проблема в том что предмет в слоте может быть любым, как и фон за ячейками, так как он прозрачный.

Это понятно.
Что бы понять какую ставить разбежность надо сделать 2 скрина. Один когда под ячейками самый светлый цвет фона. Второй самый темный. Тут стоит разбежность 70, что в принципе должно сработать на любом фоне и не пропустить какой то объект в ячейке.
А как обойти все ячейки? В цикле, подставляя координаты каждой ячейки в точке на скрине..

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

(Отредактировано автором: 16 Марта, 2022 - 11:04:15)

 
 Top
Kibor
Отправлено: 16 Марта, 2022 - 11:04:00
Post Id



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


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




Обойти в цикле
CODE:
//Таблица 5 на 3
int X[5]={100, 170, 240, 310, 380}//Координаты по x
int Y[3]={200, 270, 340}//Координаты по y

for (int x=0; x<5; x++)
{
for (int y=0; y<3; y++)
{
if (scan_slot(X[x], Y[y])==1)messagebox ("Слот не пустой");
else messagebox ("Слот пустой");
}
}

(Добавление)
 Kwaga пишет:
не понял количество какого цвета считать в sumcolor

Если сканируется прямоугольник 40 на 40, то там 1600 пикселей.
Почитайте про функцию sumcolor
(Добавление)
 Kwaga пишет:
И пока что понимаю только визуальный редактор.

Там тоже есть циклы и все что надо. Но понимать что тут написано надо для понятия алгоритма.
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 4 (гостей: 4, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by