|
findimage Lua., Помощь написание скрипта. |
|
|
Санёк.R. |
6.11.2022, 10:22
|
Neophyte
Сообщений: 11
Регистрация: 3.9.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.330
Возраст: 21
|
Добрый день. Хочу написать скрипт с 0. Кто сможет помогите пожалуйста. Буду писать по очериди что надо. Это есть. Код --lua math.randomseed(os.clock()) local handle = findwindow('кнут') if handle then workwindow(handle[1][1]) showwindow(handle[1][1]) windowpos(1, 1, 1366, 768) else log('Окно не найдено') end log 'clear' log 'mode compact' log ("open", 10, 563, 290, 190) -- открыть окно лога в координатах , с размером log ("АС")
--есть: Работает не очень как хочу но это ПОТОМ. local startX, startY, endX, endY = 0, 0, 1366, 768 -- координаты поиска local path = [[C:\Newfindi]] -- путь к картинкам
local image = {"Сундук", "Красный", "Синий", "Зелёный", "Отдать", "Забрать"} -- Именами картинок hint ("Всего картинок для поиска " .. #image) for i= #image, 1, -1 do -- for i=1, #image do -- цикл для поиска картинок local arr, a = findimage (startX, startY, endX, endY, {path .. "\\" .. image[i] .. ".bmp"}, 2) -- поиск картинки if a > 0 then -- if arr then kleft (arr[1][1], arr[1][2]) wait (310 + math.random (100)) end end
НАДО: Сделать Ждал появления Красной картинки на экране и нашёл её в папке где картинки. Это как пример while color(639, 165,"abs") ~= 1331506 do -- ЖДАТЬ Это первое что надо решить. Потом всё остальное.Спасибо. Сообщение отредактировал DarkMaster - 6.11.2022, 10:54
|
|
|
|
DarkMaster |
6.11.2022, 11:03
|
Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27725
Пользователь №: 11.279
|
Цитата for i= #image, 1, -1 do -- for i=1, #image do -- цикл для поиска картинок Обратный порядок чем-то обусловлен? Закоменченное for i=1, #image do пробще и как-то логичнее. Цитата НАДО: Сделать Ждал появления Красной картинки на экране и нашёл её в папке где картинки. Что есть нашел картинку в папке? Ну если мы ищем на экране "ваза.bmp", то в папке будет "ваза.bmp". По ожиданию: Код while color(x, y) ~= your_color do wait(100) end
Если задача стоит в случае верного цвета дополнительно проверить наличие картинки (так делать не рекоменду., т.к. только замедлите скрипт, обычно проще по ресурсам сразу искать конечную картинку за исключением случаев очень большой зоны поиска и большой картинки): Код while not (color(x, y) == your_color and findimage(...)) do wait(100) end
Сообщение отредактировал DarkMaster - 6.11.2022, 11:08
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
Санёк.R. |
6.11.2022, 12:02
|
Neophyte
Сообщений: 11
Регистрация: 3.9.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.330
Возраст: 21
|
Цитата(Demych1 @ 6.11.2022, 11:47) Аналогичная проблема: нужно дождаться появления определенной картинки на экране и кликнуть по ней, и ждать ее снова. Сделал так:
while_not #a > 0 wait 2000 set #a FindImage (100 100 1920 1080 (E:\Картинки\Нашход.bmp) %arr 2 50 20 15) end_while Kleft %arr [1 1] %arr [1 2]
Все нормально-ждет потом ее нажимает, если скрипт остановить и снова запустить, тоже ждет и только потом жмет. Проблема кода скрипт без остановки повторяется то ожидания нет, идет исполнение каждой строки и клик в ранее установленные координаты. Как сделать чтоб в зацикленном скрипте тоже работало.
Не знаю сам только учусь. А так while_not #a > 0 wait 2000 end_while set #a FindImage (100 100 1920 1080 (E:\Картинки\Нашход.bmp) %arr 2 50 20 15) Kleft %arr [1 1] %arr [1 2] end_while
|
|
|
|
Demych1 |
6.11.2022, 12:31
|
Registred
Сообщений: 6
Регистрация: 6.11.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.405
Возраст: 45
|
Цитата(Санёк.R. @ 6.11.2022, 12:02) Не знаю сам только учусь. А так while_not #a > 0 wait 2000 end_while set #a FindImage (100 100 1920 1080 (E:\Картинки\Нашход.bmp) %arr 2 50 20 15) Kleft %arr [1 1] %arr [1 2] end_while
нет не работает: Не могу найти начало цикла: 'While
|
|
|
|
Demych1 |
6.11.2022, 13:44
|
Registred
Сообщений: 6
Регистрация: 6.11.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.405
Возраст: 45
|
Цитата(Demych1 @ 6.11.2022, 11:47) Аналогичная проблема: нужно дождаться появления определенной картинки на экране и кликнуть по ней, и ждать ее снова. Сделал так:
while_not #a > 0 wait 2000 set #a FindImage (100 100 1920 1080 (E:\Картинки\Нашход.bmp) %arr 2 50 20 15) end_while Kleft %arr [1 1] %arr [1 2]
Все нормально-ждет потом ее нажимает, если скрипт остановить и снова запустить, тоже ждет и только потом жмет. Проблема кода скрипт без остановки повторяется то ожидания нет, идет исполнение каждой строки и клик в ранее установленные координаты. Как сделать чтоб в зацикленном скрипте тоже работало.
Решил: требуется добавить шестую строку строку: set #a 0 Все работает и в цикле теперь.
|
|
|
|
Санёк.R. |
6.11.2022, 20:51
|
Neophyte
Сообщений: 11
Регистрация: 3.9.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.330
Возраст: 21
|
while not (color(x, y) == your_color and findimage(...)) do wait(100) end Куда не ставлю не выходит у меня. Вот написал простой скрипт чтоб понятней было что хочу . Всё по парядку работает как надо.только надо сократить и правельно сделать всё в findimange.Если не трудно помогите или отавлю таким рабочим но не красивым. Код ::start:: local startX, startY, endX, endY = 0, 0, 1366, 768 -- координаты поиска local path = [[C:\Newfindi]] -- путь к картинкам
while color(715, 396,"abs") ~= 1914709 do -- ЖДАТЬ НАДО Что бы findimange Было. wait(500 + math.random(150)) end
-- БЛОК КАРТИНОК ПРЕДМЕТОВ. local image = {"книга", "клыки", "коты"} -- ИМЕНА КАРТИНОК. hint ("Всего картинок для поиска " .. #image) for i=1, #image do -- цикл для поиска картинок local arr, a = findimage (startX, startY, endX, endY, {path .. "\\" .. image[i] .. ".bmp"}, 2) -- поиск картинки if arr then kleft (arr[1][1], arr[1][2]) wait (230 + math.random (100)) end end
После клика по картинки выезжает табло со словами. -- БЛОК КАРТИНОК НАДПИСЕЙ. wait (230 + math.random (100)) local image = {"открыть", "опусташить", "вскрыть"} -- ИМЕНА СЛОВ. hint ("Всего картинок для поиска " .. #image) for i=1, #image do -- цикл для поиска картинок local arr, a = findimage (startX, startY, endX, endY, {path .. "\\" .. image[i] .. ".bmp"}, 2) -- поиск картинки if arr then kleft (arr[1][1], arr[1][2]) wait (1110 + math.random (170)) end end
local image = {"череп"} -- hint ("Всего картинок для поиска " .. #image) for i=1, #image do -- цикл для поиска картинок local arr, a = findimage (startX, startY, endX, endY, {path .. "\\" .. image[i] .. ".bmp"}, 2) -- поиск картинки if arr then wait (210 + math.random (100)) log('Череп') goto start end end while color(715, 396,"abs") ~= 1914709 do -- ЖДАТЬ НАДО Что бы findimange Было. wait(500 + math.random(150)) end Ниже бругие блоки срипта. goto start
Сообщение отредактировал DarkMaster - 7.11.2022, 23:13
|
|
|
|
Санёк.R. |
7.11.2022, 11:06
|
Neophyte
Сообщений: 11
Регистрация: 3.9.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.330
Возраст: 21
|
Цитата(Madeus @ 7.11.2022, 10:53) Если правильно понял что ты хочешь Код repeat image1 = findimage(startX, startY, endX, endY, {path .. "\\" .. your_image .. ".bmp"}, 2) until image1 Спасибо. Попробую.
|
|
|
|
Санёк.R. |
8.11.2022, 9:20
|
Neophyte
Сообщений: 11
Регистрация: 3.9.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.330
Возраст: 21
|
Спасибо Всем. Ошибка найдена, проблема решена, всё работает как надо. По подсказке Cirus я выбрал этот вариант кода может кому пригодится.
local startX, startY, endX, endY = 0, 0, 1366, 768 -- координаты поиска local path = [[W:\Картинки\Зелёный.bmp]] -- путь к картинкам
while findimage(startX, startY, endX, endY, {path}, 2) == nil do wait (300 + math.random (200)) log('Ждать') end
|
|
|
|
Остап Бендер |
3.12.2022, 8:26
|
Registred
Сообщений: 3
Регистрация: 29.11.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.430
|
Цитата(Zenogiasu @ 3.12.2022, 5:22) Блин, ошибся)) я имел в виду Финдколор. Финдколор это замечательно и это спасение, если комп не тянет поиск мощных картинок в играх с норм графой. Интересует именно поиск цвета в области с возможностью указать погрешность и кол-во пикселей, а не просто ИФ-Цвет.
Читай темы тут много таких образцов для Колор. А про findimage старинный, слабый бук всё тянет тестирую на таком.
|
|
|
|
DarkMaster |
3.12.2022, 11:34
|
Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27725
Пользователь №: 11.279
|
там есть "фишки" Код close = {} -- Обязательно дожен быть глобальын. НЕ local local stat = findcolor(303, 291, 417, 392, 1, 1, "(0xC0E9F0-0xC0E9F9)", '%close',2,100,100)
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
Санёк.R. |
3.12.2022, 15:27
|
Neophyte
Сообщений: 11
Регистрация: 3.9.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.330
Возраст: 21
|
Может кому пригодится новичкам как я. Подсказка cirus.
--lua log 'clear' log 'mode compact' log ("open", 10, 593, 290, 185) log ("Бои")
local startX, startY, endX, endY = 387, 40, 838, 282 -- координаты ТАБЛО ПОБЕДА. local path = [[W:\Надписи\победа.bmp]] -- надпись ПОБЕДА.
local startX2, startY2, endX2, endY2 = 422, 490, 1065, 621 -- СУНДУК с ОРУЖИЕМ. local path2 = [[W:\Картинки]] local image = {"блок","нож","щит","топор"} -- ИМЕНА КАРТИНОК: УДАРЫ.
local Win = 0 while Win == 0 do -- пока значение переменной равно 0 for i=1, #image do local arr, a = findimage (startX, startY, endX, endY, {path}, 2) -- поиск картинки победа if arr then -- если найдена log ("Победа!!!") Win = 1 -- присвоить переменной значение 1 break -- выход из цикла поиска картинок end
local arr, a = findimage (startX2, startY2, endX2, endY2, {path2 .. "\\" .. image[i] .. ".bmp"}, 2, 80, 1, 3) if arr then kleft (arr[1][1], arr[1][2]) wait (930 + math.random (300)) end end
if Win == 1 then break end -- если значение переменной равно 1, то выход из цикла while wait (310 + math.random (300)) end
|
|
|
|
Zenogiasu |
13.12.2022, 23:27
|
Neophyte
Сообщений: 42
Регистрация: 3.12.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.434
Возраст: 27
|
Цитата(Остап Бендер @ 3.12.2022, 8:26) Читай темы тут много таких образцов для Колор. А про findimage старинный, слабый бук всё тянет тестирую на таком.
финдимаге может больше чем сама игра жрать при поиске банального поплавка для рыболовного бота поэтому приходится финдколором выкручиваться по умному
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|