|
FindColor (LUA), Передача переменных в findcolor |
|
|
Gendalfgreen |
2.6.2022, 16:23
|
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
|
|
|
|
DarkMaster |
2.6.2022, 17:18
|
Модератор 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____
|
|
|
|
Gendalfgreen |
2.6.2022, 23:14
|
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
|
|
|
|
Kangoshi |
14.8.2023, 12:27
|
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, только описание отсутствует. Полагаю после меня она понадобится кому-то в следующем году, поэтому смысла описывать нет?
|
|
|
|
Madeus |
14.8.2023, 13:59
|
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: Методом тыка выяснил, что сама функция возвращает число искомых пикселей. Что она ещё возвращает и как об этом узнать? Тут описание в старом синтаксисе
|
|
|
|
yodich |
19.8.2023, 19:00
|
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
|
|
|
|
Madeus |
20.8.2023, 0:21
|
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
|
|
|
|
Zenogiasu |
4.10.2023, 12:44
|
Neophyte
Сообщений: 42
Регистрация: 3.12.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.434
Возраст: 27
|
Цитата(Madeus @ 27.8.2023, 12:17) Я не удачный пример выбрал для теста, deviation работает ровно так же как и в пилотовском синтаксисе. Результирующий массив задавать заранее не нужно. Если задать локальный, то точно не сработает) З.Ы. сообщение выше исправил, добавлена страничка на wiki Findcolor (Lua)НУ НАКОНЕЦТО! Теперь со спокойной душой можно идти изучать луа. Какое счастье. Спасибо.
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|