|
Поиск картинки в игре на MEmu |
|
|
PostByMik |
25.10.2020, 17:09
|
 
Neophyte
Сообщений: 47
Регистрация: 19.10.2020 Группа: Пользователи Наличность: 0
Пользователь №: 19.780
Возраст: 40

|
Пытаюсь понять логику работы команды findimage, пока попытки успехом не увенчались. Знающие люди, подскажите, пожалуйста, как работает, какова логика работы данной команды: 1. Можно ли сделать скрин области в игре на эмуляторе MEmu (естественно в формате .bmp 24 бита) и далее её искать в указанной области или это так не работает? 2. если первый пункт не верный, то как надо? А теперь сама задача, которую я пытаюсь решить. Есть игра, в игре есть карта, на карте с определенным промежутком времени появляется караван, на который надо кликнуть и провести еще пару манипуляций мышью. Пытаюсь пока написать код, что бы он находил караван и кликал на него (после нажатия на него откроется меню ну и дальше уже обычные клики и ожидания, этому, вроде, я научился.) Код --lua local startX, startY, endX, endY = 0, 0, 830, 465 -- координаты поиска local path = [["C:\Caravan.bmp"]] -- путь к картинке, bmp 24 бита local arr, a = findimage (startX, startY, endX, endY, {path}, 2, 70, 1, 25) -- поиск картинки hint (a) -- результат поиска, подсказка в правом нижнем углу if arr then -- если найдена log ("Изображение найдено в координатах X= " .. arr[1][1] .. " Y= " .. arr[1][2]) kleft (arr[1][1], arr[1][2]) -- кликнули end
 Это скрин карты в игре с караваном на ней, пытался на нем потренироваться, не находит (
Caravan.bmp ( 18,36 килобайт )
Кол-во скачиваний: 192 Это скрин самого каравана, который надо найти. Что я делаю не так, подскажите, пожалуйста.
|
|
|
|
|
  |
Ответов
PostByMik |
3.11.2020, 20:07
|
 
Neophyte
Сообщений: 47
Регистрация: 19.10.2020 Группа: Пользователи Наличность: 0
Пользователь №: 19.780
Возраст: 40

|
Апд. Как я понял, при помощи function можно создать запись, дать ей имя и потом к ней просто обращаться. Но правильно ли вот такое: Код repeat if color(121, 403) == 51541 -- Если зеленый цвет, то кд прошел (НИЖНИЙ ЛЕВЫЙ) then -- если в координатах цвет 51541 move_smooth (121, 403, 5, 5, 5, 5) --перемещаем курсор в точку последующего клика wait (250) --выжидаем паузу между действиями kleft (121, 403, 5, 5, 5, 5) --нажать левую кнопку в координатах wait (650) if color(584, 397) == 16777215 and color(577, 433) == 16777215 -- Если в двух точках цвет белый, то умению нужно указать область then -- если в координатах цвет 16777215, то умение будет применено к крайней точке от башни move_smooth (632, 437, 5, 5, 5, 5) --перемещаем курсор в точку последующего клика wait (650) --выжидаем паузу между действиями kleft (632, 437, 5, 5, 5, 5) --нажимаем место применения умение wait (650) end end if color(172, 320) == 51541 -- Если зеленый цвет, то кд прошел (СНИЗУ ВТОРОЙ РЯД, ЛЕВЫЙ) then -- если в координатах цвет 51541 move_smooth (172, 320, 5, 5, 5, 5) --перемещаем курсор в точку последующего клика wait (650) --выжидаем паузу между действиями kleft (172, 320, 5, 5, 5, 5) --нажать левую кнопку в координатах wait (650) if color(584, 397) == 16777215 and color(577, 433) == 16777215 -- Если в двух точках цвет белый, то умению нужно указать область then -- если в координатах цвет 16777215, то умение будет применено к крайней точке от башни move_smooth (632, 437, 5, 5, 5, 5) --перемещаем курсор в точку последующего клика wait (650) --выжидаем паузу между действиями kleft (632, 437, 5, 5, 5, 5) --нажимаем место применения умение wait (650) end end if color(223, 320) == 51541 -- Если зеленый цвет, то кд прошел (СНИЗУ ВТОРОЙ РЯД, ПРАВЫЙ) then -- если в координатах цвет 51541 move_smooth (223, 320, 5, 5, 5, 5) --перемещаем курсор в точку последующего клика wait (650) --выжидаем паузу между действиями kleft (223, 320, 5, 5, 5, 5) --нажать левую кнопку в координатах wait (650) if color(584, 397) == 16777215 and color(577, 433) == 16777215 -- Если в двух точках цвет белый, то умению нужно указать область then -- если в координатах цвет 16777215, то умение будет применено к крайней точке от башни move_smooth (632, 437, 5, 5, 5, 5) --перемещаем курсор в точку последующего клика wait (650) --выжидаем паузу между действиями kleft (632, 437, 5, 5, 5, 5) --нажимаем место применения умение wait (650) end end if color(224, 234) == 51541 -- Если зеленый цвет, то кд прошел (СНИЗУ ТРЕТИЙ РЯД, ПРАВЫЙ) then -- если в координатах цвет 51541 move_smooth (224, 234, 5, 5, 5, 5) --перемещаем курсор в точку последующего клика wait (650) --выжидаем паузу между действиями kleft (224, 234, 5, 5, 5, 5) --нажать левую кнопку в координатах wait (650) if color(584, 397) == 16777215 and color(577, 433) == 16777215 -- Если в двух точках цвет белый, то умению нужно указать область then -- если в координатах цвет 16777215, то умение будет применено к крайней точке от башни move_smooth (632, 437, 5, 5, 5, 5) --перемещаем курсор в точку последующего клика wait (650) --выжидаем паузу между действиями kleft (632, 437, 5, 5, 5, 5) --нажимаем место применения умение wait (650) end end if color(172, 235) == 51541 -- Если зеленый цвет, то кд прошел (СНИЗУ ТРЕТИЙ РЯД, ЛЕВЫЙ) then -- если в координатах цвет 51541 move_smooth (162, 237, 5, 5, 5, 5) --перемещаем курсор в точку последующего клика wait (250) --выжидаем паузу между действиями kleft (162, 237, 5, 5, 5, 5) --нажать левую кнопку в координатах wait (650) if color(584, 397) == 16777215 and color(577, 433) == 16777215 -- Если в двух точках цвет белый, то умению нужно указать область then -- если в координатах цвет 16777215, то умение будет применено к крайней точке от башни move_smooth (632, 437, 5, 5, 5, 5) --перемещаем курсор в точку последующего клика wait (650) --выжидаем паузу между действиями kleft (632, 437, 5, 5, 5, 5) --нажимаем место применения умение wait (650) end end until color(530, 426) == 51541 and color(346, 420) == 51541 -- Если зеленый цвет, то бой завершился
новый варинат Код function pvp(num1, x, y, x1, y1, num2, x2, y2, x3, y3, x4, y4) if color(x, y) == num1 -- Если зеленый цвет, то кд прошел (СНИЗУ ТРЕТИЙ РЯД, ЛЕВЫЙ) then -- если в координатах цвет num1 move_smooth (x1, y1, 5, 5, 5, 5) --перемещаем курсор в точку последующего клика wait (250) --выжидаем паузу между действиями kleft (x1, y1, 5, 5, 5, 5) --нажать левую кнопку в координатах wait (650) if color(x2, y2) == num2 and color(x3, y3) == num2 -- Если в двух точках цвет белый, то умению нужно указать область then -- если в координатах цвет num2, то умение будет применено к крайней точке от башни move_smooth (x4, y4, 5, 5, 5, 5) --перемещаем курсор в точку последующего клика wait (650) --выжидаем паузу между действиями kleft (x4, y4, 5, 5, 5, 5) --нажимаем место применения умение wait (650) end end end
repeat pvp (51541, 121, 403, 121, 403, 16777215, 577, 433, 584, 397, 632, 437) pvp (51541, 172, 320, 172, 320, 16777215, 584, 397, 577, 433, 632, 437) -- и так далее до until color(530, 426) == 51541 and color(346, 420) == 51541 -- Если зеленый цвет, то бой завершился
Или я что-то не так понял? Цитата Есть у меня комбайн Спасибо! Буду смотреть и разбираться.
|
|
|
|
Сообщений в этой теме
PostByMik Поиск картинки в игре на MEmu 25.10.2020, 17:09 cirus
Для чего? getimage или printscreen.
Часто изображ... 25.10.2020, 17:37 PostByMik Я во всем этом новичек, пытаюсь понять сам, но пре... 25.10.2020, 19:28 PostByMik Дайте, пожалуйста, адекватный пример. Со всеми тре... 25.10.2020, 20:11 cirus getimage неправильно работает при работе с экраном... 25.10.2020, 20:17 PostByMik
Так нашел и сохранил сразу. Спасибо огромное... 25.10.2020, 20:32 cirus RE: Поиск картинки в игре на MEmu 25.10.2020, 20:41 PostByMik
Искренне благодарен, с этим файлом работает, но ... 25.10.2020, 20:54 cirus
Открыть искомую картинку в Paint, выбрать каранда... 25.10.2020, 21:08 PostByMik Спасибо за ответ!
Я понимаю, что Вам с высоты ... 25.10.2020, 21:14 Fors1k
Осталось понять про пиксель. Зачем его красить? И... 26.10.2020, 0:05 cirus
--lua
local ffi = require("ffi"... 25.10.2020, 21:51 PostByMik Спасибо огромное за пояснения!
Код буду перев... 25.10.2020, 21:52 PostByMik Подскажите, пожалуйста, как решить проблему.
l... 26.10.2020, 19:28 DarkMaster Я бы рекомендовал:
1) вырезать правый нижний угол ... 26.10.2020, 19:44 cirus Можно удалить из массива лишние картинки.
--lua
fu... 27.10.2020, 4:00 PostByMik
Ох! Спасибо!
А можно пояснить что тут к ч... 27.10.2020, 8:20 cirus Кстати, искать картинки можно и такого вида:
Левы... 27.10.2020, 11:20 dimas01 На эту же тему вопрос. Надеюсь автор темы не проти... 27.10.2020, 13:23 cirus
Создавайте отдельную.
Нужен пилот версии 2.41, а... 27.10.2020, 13:29 PostByMik Всем спасибо за помощь!
В итоге, для меня лег... 27.10.2020, 17:47 PostByMik Может кто знает как заставить данный код нажимать ... 2.11.2020, 21:30 DarkMaster kleft (arr[1][1] + 10, arr... 2.11.2020, 21:54 cirus
kleft (arr[1][1] + math.floor... 3.11.2020, 1:37 DarkMaster тогда уж:
kleft (math.floor((arr[1... 3.11.2020, 2:21 PostByMik Ох! Спасибо огромное!
Еще хотел пару вопр... 3.11.2020, 9:09 cirus
Например какие?
Не можно, а нужно.
--lua
log ... 3.11.2020, 11:02 PostByMik Простите, но я не очень понял как именно это испол... 3.11.2020, 14:49 DarkMaster Есть у меня комбайн под подобные задачи. Работа ра... 3.11.2020, 17:18 Cockney
Есть у меня комбайн под подобные задачи. Работа р... 4.11.2020, 13:44 PostByMik Апд.
Проверил, работает! ) 3.11.2020, 20:30 DarkMaster
Завтра утром ты не вспомнишь, что это за набор ма... 3.11.2020, 20:52 PostByMik
Да понятное дело, что твой код крутой, но я же до... 3.11.2020, 21:21 PostByMik
вот где почитать про все эти функции, ну кроме кл... 3.11.2020, 21:31 DarkMaster
это не функции. Это имена параметров функции. Ну ... 3.11.2020, 21:50 PostByMik
Да, написал выше, что не углядел сразу)
Спасибо... 3.11.2020, 21:59 PostByMik
Так и не смог понять как у Вас реализован функцио... 4.11.2020, 11:21 DarkMaster
Были еще до этого комбайна - работает. Тут правда... 4.11.2020, 17:52 DarkMaster
В конкретно этом случае - никак. Это просто заглу... 4.11.2020, 20:42 cirus
А что мешает проверить изменения в области №2? 4.11.2020, 20:55 DarkMaster
Необходимость произвести 2 клика прежде чем будет... 4.11.2020, 21:32 PostByMik
Действительно, есть)
Если отойти от вашего комба... 5.11.2020, 11:21 DarkMaster что-то вроде этого. внутри тела цикла клики соотве... 5.11.2020, 18:33 PostByMik
Пытаюсь понять всё описанное в Вашем комбайне.
В... 8.11.2020, 15:45 DarkMaster
В нормальном виде это каждый раз новая функция по... 8.11.2020, 20:02 PostByMik Ни где не смог найти информацию, казалось бы, кото... 9.11.2020, 15:38 Fors1k
что означают фигурные скобки после знака "=... 9.11.2020, 16:45 PostByMik Ох! Спасибо Огромное!
Теперь стало понятно... 9.11.2020, 17:07 PostByMik Всё в туже тему, про работу по таймеру.
Написал к... 9.11.2020, 18:27 DarkMaster
Так делать не стоит - малейший лаг и проскочит.
... 9.11.2020, 20:19 DarkMaster
Да простят меня за дотошность, но в рамках луа эт... 9.11.2020, 20:35 Cockney
Доступ к элементу в связном списке в среднем зани... 9.11.2020, 21:34 PostByMik А если у меня вместо
портянка на 100+ строк, то м... 9.11.2020, 22:20 PostByMik Суть в в следующем.
У меня есть (назовем их частям... 9.11.2020, 22:31 DarkMaster
Тыщ на 100 элементов создай список и сравни с мас... 9.11.2020, 22:48 Cockney
Тыщ на 100 элементов создай список и сравни с мас... 9.11.2020, 23:10 DarkMaster
Опечатался. O(1) конечно же, а не O(N).
Имхо это... 9.11.2020, 23:42 Cockney
Смотря, что делать. Может стать и существенным н... 10.11.2020, 14:48 PostByMik
Если не учитывать, что я написал, что нужно после... 10.11.2020, 13:13 PostByMik
Или раз в неделю ручками менять данные. Но хотело... 10.11.2020, 14:16 cirus
Os.date 10.11.2020, 14:27 DarkMaster
Вставка на си. Едва ли это так плохо. В том же си... 10.11.2020, 15:43 Cockney
Вставка на си. Едва ли это так плохо.
Точно ? ... 10.11.2020, 17:11 DarkMaster
Беспонятия =) Сообщил для информации.
Тут есть и... 10.11.2020, 17:16 Cockney
Тут есть и оборотная сторона. Пишем не на луа - д... 10.11.2020, 17:52
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|