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

2 страниц V < 1 2  
Ответить в эту темуОткрыть новую тему
> FindColor (LUA), Передача переменных в findcolor
DarkMaster
сообщение 1.6.2022, 20:14
Сообщение #21


***********

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



Вы раскомменчивали строки?


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


**

Neophyte
Сообщений: 18
Регистрация: 29.3.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.219
Возраст: 30



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


***********

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



Попробуйте.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Gendalfgreen
сообщение 2.6.2022, 16:23
Сообщение #24


**

Neophyte
Сообщений: 18
Регистрация: 29.3.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.219
Возраст: 30



while f ~= 100 do
local xm, level = mouse_pos()

local ttt = tostring(color(xm, level))
local tttq = '6000000'
local tttqq = '5134433-6000000'

local stat = findcolor(10, level, 700, level, ttt .. '-' .. tttq, '%close',2,100,100) -- Находит 2-5 цвета

local stat = findcolor(10, level, 700, level, tttqq, '%close',2,100,100) -- возвращает nil

local stat = findcolor(10, level, 700, level, ttt, '%close',2,100,100) -- возвращает nil
f = f + 1
log (stat,ttt,f)
wait (1000)
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 2.6.2022, 16:31
Сообщение #25


***********

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



Ну собственно все, что я могу сказать - ttt у вас не равно 5134433

а ну и поиск диапазонов работает =) главное стрингом туда.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Gendalfgreen
сообщение 2.6.2022, 16:58
Сообщение #26


**

Neophyte
Сообщений: 18
Регистрация: 29.3.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.219
Возраст: 30



Это я поспешил((. Еще раз проверил работает только

local stat = findcolor(10, level, 700, level, ttt, '%close',2,100,100)

И выдает результат 2-5. т.е ищет один цвет.
findcolor - видимо в ЛУА не работает в части поиска диапазонов и отклонений

У меня задача отследить изменения которые происходят вокруг.
Скажите а можно в буфер сохранить исходную часть экрана и постоянно сравнивать не изменилась ли она?

Сейчас это у меня реализовано не на ЛУА. я findcolor ом ищу кол-во одинаковых пикселей и потом постоянно проверяю не изменилось ли их кол-во. Если изменилось значит рядом кто-то есть.

ЛУА на порядок быстрее работает хотел перевести на нее. но что-то не пошло.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 2.6.2022, 17:18
Сообщение #27


***********

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



в скобки возьмите внутри стринга
local stat = findcolor(303, 291, 417, 392, 1, 1, "(0xC0E9F0-0xC0E9F9)", '%close',2,100,100)


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Gendalfgreen
сообщение 2.6.2022, 23:14
Сообщение #28


**

Neophyte
Сообщений: 18
Регистрация: 29.3.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.219
Возраст: 30



ООООООооо ЗАРАБОТАЛО!!!! буду еще тестить но вроде работает!!!
причем и диапазон работает, и если просто задать число и процент отклонения тоже работает!!
надо еще тестить...
Бооооольшое ВАМ спасибо! Я бы до такой конструкции никогда бы не догадался!
tostring(dec2hex(color(xm, level)))

Ниже рабочий код.

while f ~= 100 do
local xm, level = mouse_pos()

local ttt = tostring(dec2hex(color(xm, level)))

local stat = findcolor(10, level, 700, level, 1, 1, ttt, '%close',2,20000,30)

f = f + 1
log (stat,ttt,f)
wait (1000)
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Kangoshi
сообщение 14.8.2023, 12:27
Сообщение #29


**

Neophyte
Сообщений: 36
Регистрация: 9.8.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 13.878



Цитата(DarkMaster @ 30.5.2022, 17:54) *

x1, y1, x2, y2, color, arr, method, count, deviation

Приходится догадываться какие данные "идут туда", какие и в каком формате "оттуда"...
Что за method? Что кроме хендла туда можно передать? Какое значение по-умолчанию?
Что за count? Сразу подсчитывает количество пикселей с заданным цветом в указанной области? Или что?
Догадываюсь что за deviation, только какие значения там можно указывать и как они повлияют на этот самый deviation?
Откуда вообще взялась эта findcolor? Гугл кроме этого форума больше нигде не может найти это слово. (IMG:style_emoticons/default/laugh.gif) Ну, 3 страницы результатов выдаёт, только ничего толкового нет.

upd: Методом тыка выяснил, что сама функция возвращает число искомых пикселей. Что она ещё возвращает и как об этом узнать?

В общем, свою задачу я разобрался как решить, но я задействовал минимум функционала. Жаль, что в списке команд Lua её нет, найти её можно случайно по ссылке со страницы описания Color, только описание отсутствует. Полагаю после меня она понадобится кому-то в следующем году, поэтому смысла описывать нет?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Madeus
сообщение 14.8.2023, 13:59
Сообщение #30


****

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



Цитата(Kangoshi @ 14.8.2023, 12:27) *

Приходится догадываться какие данные "идут туда", какие и в каком формате "оттуда"...
Что за method? Что кроме хендла туда можно передать? Какое значение по-умолчанию?
Что за count? Сразу подсчитывает количество пикселей с заданным цветом в указанной области? Или что?
Догадываюсь что за deviation, только какие значения там можно указывать и как они повлияют на этот самый deviation?
Откуда вообще взялась эта findcolor? Гугл кроме этого форума больше нигде не может найти это слово. (IMG:style_emoticons/default/laugh.gif) Ну, 3 страницы результатов выдаёт, только ничего толкового нет.

upd: Методом тыка выяснил, что сама функция возвращает число искомых пикселей. Что она ещё возвращает и как об этом узнать?

Тут описание в старом синтаксисе
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 14.8.2023, 18:10
Сообщение #31


***********

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



Господа, если есть желающие заняться вики - я организую доступ. Ей изначально занимался я, потом туда просто море информации было добавлено Cirus'ом. Сейчас ни он ни я не можем ей заниматься.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Madeus
сообщение 15.8.2023, 11:22
Сообщение #32


****

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



Цитата(DarkMaster @ 14.8.2023, 18:10) *

Господа, если есть желающие заняться вики - я организую доступ. Ей изначально занимался я, потом туда просто море информации было добавлено Cirus'ом. Сейчас ни он ни я не можем ей заниматься.

Времени свободного особо нет, но по возможности могу добавлять актуальное.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 15.8.2023, 17:21
Сообщение #33


***********

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



Может занять некоторое время, акк для тебя запросил.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
yodich
сообщение 19.8.2023, 19:00
Сообщение #34


***

Novice
Сообщений: 90
Регистрация: 24.8.2020
Группа: Пользователи
Наличность: 0
Пользователь №: 19.728
Возраст: 29



Цитата(Gendalfgreen @ 1.6.2022, 20:04) *

возвращает nil....... ((((((((((((((((((((((((((((((((((


тоже как-то мучился с этим, потом сам примерно написал какие-то типо разбросы цветов для своего удобства
Авось тебе поможет

Код

--lua
function print ( ... ) return log ( ... ) end print ('clear')


  ClassDeviationColors = {}

  function ClassDeviationColors:new ()
    local obj = {

  --[[
    { "Имя кнопки или тп для себя",
      -- разброс цветов
      14277338, 13882323, 12442098, 13492981, 14478328, 2701653, 2504272, 1092837, 12704755, 12179441
    },
  ]]--

      { "Главная",
        15000021, 4800570, 10457985, 7839914, 12893098, 2963000, 5534330, 9732990, 7889747, 6309175
      }

    }

    obj.NextLocation = {

      { "Атака_Босса",
        866143, 1330049, 1198201, 9802, 1328754, 7995, 4911, 736615, 1064551, 9286
      },

      { "Магазин-->",
        15526891, 15855857, 14737375, 15132132, 16382457, 737417, 14539996, 4013541, 16185077, 10266808
      }

    }

    -- рабочее окно
    function obj:Work (nameWork, fullscreen)
      xth, yth, width, height = 0, 0, 1920, 1080
      local fullscreen = fullscreen or false -- вкл/выкл переход на полный экран
      local flibu = findwindow (nameWork)
      if ( flibu ) then
        local WindowWork = workwindow (flibu[1][1], "child")
        if ( fullscreen == true ) or ( fullscreen == "fullscreen" ) then showwindow ( WindowWork, "maximize" ) end
        xth, yth, width, height, errorcode =  windowpos (WindowWork)
        print (nameWork .. "- окно активно, размер окна - ", xth, yth, width, height)
      else
        msg ("окнo не найдено")
        end_script()
      end
      return WindowWork, xth, yth, width, height
    end

    -- радомное вермя кликов
    function obj:timerClick (timers, text)
      math.randomseed(os.clock())
      local timers = timers + math.random (770) or 1000
      local text = text or "[[ " .. math.modf(timers/1000) .. " ]] sec"
      if ( timers > 1000 and text ~= nil ) then wait (timers + math.random(1) ) print (text .. " [[" .. math.modf(timers/1000) .. " sec ]]") end
      left (x, y, WindowWork)
      return timers, text, x, y
    end

    --[[
  xstart, ystart, xend, yend - координаты
  colors - массив цветов разброса
  count - кол-во для нахождения цветов
  ]]--
    function obj:fc (xstart, ystart, xend, yend, colors, count)
      local intCount = count or 4
      local counter = 0
      local intColors = colors or {}
      for i = 1, #intColors do
        local RC = findcolor (xstart, ystart, xend, yend, intColors[i], "%RCm", WindowWork)
        if RC then counter = counter + 1
          if counter >= intCount then
            x, y = RCm[1][1], RCm[1][2]
            return x, y
          end
        end
      end
    end

    -- метод чек чего-либо, типо локаций, нужной картинки/кнопки и тп
    function obj:check (sumNextColors)
      local sumNextColor = sumNextColors or 7 -- количество цветов для поиска
      for i = 1, #self do
        local checkLocations = self:fc (xth, yth, width, height, self[i], sumNextColor, WindowWork) -- поиск по рабочему окну
        if checkLocations then
          ActiveLocation = self[i][1]
          print ("Active Location --" .. ActiveLocation) break
        end
      end
      return ActiveLocation
    end

    -- метод перехода если цвета найдены
    function obj:next (NameLocationNext, sumNextColors)
      local sumNextColor = sumNextColors or 7 -- количество цветов для поиска
      for i = 1, #self.NextLocation do
        local NextLocations = self:fc (xth, yth, width, height, self.NextLocation[i], sumNextColor, WindowWork)
        if NextLocations then
          if (self.NextLocation[i][1] == NameLocationNext) then
            self:timerClick (1234, " КЛИК") break
          end
        end
      end
    end

    setmetatable (obj, self)
    self._index = self
    return obj
  end
----------------------------------------------------------------------------------------

-- тест работы
  local test = ClassDeviationColors:new ()

  test:Work("Джаггеранут", "fullscreen") -- Имя окна | Переход на полный экран false - true или "fullscreen"


  if (test:check(6) == "Главная") then -- как пример чекаем где находимся/ 6 сколько цветов надо найти/по умолчанию 7
    test:next("Атака_Босса", 3) -- переходим/кликаем куда надо // кол-во цветов, по умолчанию 7
  end



Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Madeus
сообщение 20.8.2023, 0:21
Сообщение #35


****

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



В общем методом проб и ошибок проверил как работает findcolor в lua, в целом все работает.
Код
--lua
local x1, y1, x2, y2 = 96, 192, 161, 195
local color1, color2 = 8535813, 12213274
local result = findcolor(x1, y1, x2, y2, 1, 1, '(' .. color1 .. '-' .. color2 .. ')', '%arr', 2, 15, 3, 'abs')
-- x1, y1, x2, y2 - координаты поиска
-- 1, 1 - шаг поиска по осям X и Y соответственно. Почти всегда указывают равным "1". (можно не указывать будет искать с шаог 1)
-- '(' .. color1 .. '-' .. color2 .. ')' - диапозон цевтов '(8535813-12213274)' текст '' в скобках (), .. конкатенация форматирует числа в текст
-- '%arr' - массив, в который записываются найденные значения. В каждую строку записываются координаты найденного пикселя. В 1-й колонке координата X, во 2-й координата Y, в третьей найденный цвет.
-- 2 - тип поиска. Может принимать значения "1" (надежный), "2" (быстрый) или целое число означающее хендл окна, в котором нужно вести поиск. Как правило, чаще используют "2", он тоже отлично работает.
-- 15 - количество найденных пикселей, после которых поиск прерывается. Если просто нужно определить наличие цвета в заданной области
-- и не важно общее число таких пикселей, то можно указать "1" - и скорость работы команды будет оптимальной. Если параметр не указывать, то будет искаться максимальное число пикселей
-- 3 - [deviation] (необязательно) - погрешность оттенка. Указывается в %. Например: есть погрешность 3%. Точка имеет цвет 100 120 130, 255*3%=7,
-- соответственно 100+/-7. При этом все цвета в пределах (93 113 123)-(107 127 137) будут считаться совпадением.
-- 'abs' -  этот параметр указывается, если вы ищете пиксели в координатах относительно верхнего левого угла экрана. Если не указывать параметр, то поиск будет идти в координатах рабочего окна текущего скрипта.
log(#arr)


Сообщение отредактировал DarkMaster - 27.8.2023, 19:57
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 20.8.2023, 18:30
Сообщение #36


***********

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



Цитата
все работает кроме погрешности поиска deviation.

Чет сомнения у меня. Дело в том, что луа и старый синтаксис несут под собой полностью одинаковый findcolor. Точнее даже не одинаковый, а один и тот же. При вызове через луа вызывается дополнительный парсер параметров и происход по сути преобразование к старому синтаксису в рамках передачи параметров.

Результирующий массив более не требуется объявлять заранее и при этом глобальным? (не local).


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 21.8.2023, 14:28
Сообщение #37


****

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



я использовал findcolor либо с нулевой погрешностью, либо там где она, видимо, не играла роли и тоже думал что работает. Щас открыл палитру в пэинте, выбрал цвет посередине и, независимо от погрешности всегда находит одинаковое количество пикселей.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Madeus
сообщение 27.8.2023, 12:17
Сообщение #38


****

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



Цитата(DarkMaster @ 20.8.2023, 18:30) *

Чет сомнения у меня. Дело в том, что луа и старый синтаксис несут под собой полностью одинаковый findcolor. Точнее даже не одинаковый, а один и тот же. При вызове через луа вызывается дополнительный парсер параметров и происход по сути преобразование к старому синтаксису в рамках передачи параметров.

Результирующий массив более не требуется объявлять заранее и при этом глобальным? (не local).

Я не удачный пример выбрал для теста, deviation работает ровно так же как и в пилотовском синтаксисе.

Результирующий массив задавать заранее не нужно. Если задать локальный, то точно не сработает)
З.Ы. сообщение выше исправил, добавлена страничка на wiki Findcolor (Lua)
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zenogiasu
сообщение 4.10.2023, 12:44
Сообщение #39


**

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



Цитата(Madeus @ 27.8.2023, 12:17) *

Я не удачный пример выбрал для теста, deviation работает ровно так же как и в пилотовском синтаксисе.

Результирующий массив задавать заранее не нужно. Если задать локальный, то точно не сработает)
З.Ы. сообщение выше исправил, добавлена страничка на wiki Findcolor (Lua)

НУ НАКОНЕЦТО! Теперь со спокойной душой можно идти изучать луа. Какое счастье. Спасибо.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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