Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> findimage Lua., Помощь написание скрипта.
Санёк.R.
сообщение 6.11.2022, 10:22
Сообщение #1


**

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 6.11.2022, 11:03
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27723
Пользователь №: 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____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Санёк.R.
сообщение 6.11.2022, 11:21
Сообщение #3


**

Neophyte
Сообщений: 11
Регистрация: 3.9.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.330
Возраст: 21



Обратный порядок чем-то обусловлен? Закоменченное for i=1, #image do пробще и как-то логичнее.

for i= #image, 1, -1 do -- for i=1, #image do -- цикл для поиска картинок. Нет просто учусь и пробавал и этот вариант. Спасибо
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Demych1
сообщение 6.11.2022, 11:47
Сообщение #4


*

Registred
Сообщений: 6
Регистрация: 6.11.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.405
Возраст: 45



Аналогичная проблема: нужно дождаться появления определенной картинки на экране и кликнуть по ней, и ждать ее снова. Сделал так:

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]

Все нормально-ждет потом ее нажимает, если скрипт остановить и снова запустить, тоже ждет и только потом жмет. Проблема кода скрипт без остановки повторяется то ожидания нет, идет исполнение каждой строки и клик в ранее установленные координаты. Как сделать чтоб в зацикленном скрипте тоже работало.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Санёк.R.
сообщение 6.11.2022, 12:02
Сообщение #5


**

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Demych1
сообщение 6.11.2022, 12:31
Сообщение #6


*

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Demych1
сообщение 6.11.2022, 13:44
Сообщение #7


*

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

Все работает и в цикле теперь.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 6.11.2022, 16:16
Сообщение #8


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27723
Пользователь №: 11.279



Demych1, пишите сразу на луа. В данный момент нет причин начинать писать на старом синтаксисе.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Санёк.R.
сообщение 6.11.2022, 20:51
Сообщение #9


**

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Madeus
сообщение 7.11.2022, 10:53
Сообщение #10


****

Apprentice
Сообщений: 283
Регистрация: 19.11.2019
Группа: Пользователи
Наличность: 8465
Пользователь №: 19.451
Возраст: 32



Цитата(Санёк.R. @ 6.11.2022, 20:51) *

while not (color(x, y) == your_color and findimage(...)) do
wait(100)
end

Если правильно понял что ты хочешь
Код
repeat
  image1 =  findimage(startX, startY, endX, endY, {path .. "\\" .. your_image .. ".bmp"}, 2)  
until image1
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Санёк.R.
сообщение 7.11.2022, 11:06
Сообщение #11


**

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


Спасибо. Попробую.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 7.11.2022, 23:14
Сообщение #12


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27723
Пользователь №: 11.279



Если проблема осталась - сообщите, поможем.

// Пожалуйста, форматируйте код (отступы) для нормального всприятия.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Санёк.R.
сообщение 8.11.2022, 9:20
Сообщение #13


**

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zenogiasu
сообщение 3.12.2022, 4:14
Сообщение #14


**

Neophyte
Сообщений: 42
Регистрация: 3.12.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.434
Возраст: 27



Прошу прощения за нубский вопрос, но не подскажете нубасику как делать findimage в луа? Ато в списке функций на сайте отсутствует таковая для луа.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 3.12.2022, 4:51
Сообщение #15


****

Apprentice
Сообщений: 233
Регистрация: 1.9.2012
Группа: Пользователи
Наличность: 1201
Пользователь №: 15.246
Возраст: 25



Цитата(Zenogiasu @ 3.12.2022, 4:14) *

Прошу прощения за нубский вопрос, но не подскажете нубасику как делать findimage в луа? Ато в списке функций на сайте отсутствует таковая для луа.

https://uopilot.tati.pro/index.php?title=Findimage_(Lua)
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zenogiasu
сообщение 3.12.2022, 5:22
Сообщение #16


**

Neophyte
Сообщений: 42
Регистрация: 3.12.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.434
Возраст: 27



Цитата(nykep @ 3.12.2022, 4:51) *

Блин, ошибся)) я имел в виду Финдколор. Финдколор это замечательно и это спасение, если комп не тянет поиск мощных картинок в играх с норм графой.
Интересует именно поиск цвета в области с возможностью указать погрешность и кол-во пикселей, а не просто ИФ-Цвет.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Остап Бендер
сообщение 3.12.2022, 8:26
Сообщение #17


*

Registred
Сообщений: 3
Регистрация: 29.11.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.430



Цитата(Zenogiasu @ 3.12.2022, 5:22) *

Блин, ошибся)) я имел в виду Финдколор. Финдколор это замечательно и это спасение, если комп не тянет поиск мощных картинок в играх с норм графой.
Интересует именно поиск цвета в области с возможностью указать погрешность и кол-во пикселей, а не просто ИФ-Цвет.

Читай темы тут много таких образцов для Колор. А про findimage старинный, слабый бук всё тянет тестирую на таком.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 3.12.2022, 11:34
Сообщение #18


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27723
Пользователь №: 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____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Санёк.R.
сообщение 3.12.2022, 15:27
Сообщение #19


**

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zenogiasu
сообщение 13.12.2022, 23:27
Сообщение #20


**

Neophyte
Сообщений: 42
Регистрация: 3.12.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.434
Возраст: 27



Цитата(Остап Бендер @ 3.12.2022, 8:26) *

Читай темы тут много таких образцов для Колор. А про findimage старинный, слабый бук всё тянет тестирую на таком.

финдимаге может больше чем сама игра жрать при поиске банального поплавка для рыболовного бота
поэтому приходится финдколором выкручиваться по умному
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 страниц V  1 2 >
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 26.4.2024, 2:27
Designed by Nickostyle