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

30 страниц V « < 4 5 6 7 8 > »   
Ответить в эту темуОткрыть новую тему
> Разработка findcolor, findimage, Pure lua
cirus
сообщение 1.4.2021, 3:33
Сообщение #101


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26867
Пользователь №: 16.971
Возраст: 29



Цитата
GetPixel
Хз почему, но эта радость была тормознутее

Цикл в 10000 итераций выполняется секунду. Сомневаюсь что кто будет проверять if'ом столько точек.
Цитата
+ все проблемы с перекрытыми окнами

Все проблемы поисков это использование Кнайтом GetWindowDC вместо GetDC.
GetDC получает клиентскую область окна, а GetWindowDC ещё и заголовок, меню, полосы прокрутки, короче всё окно. Из-за этого были проблемы со смещением координат.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Madeus
сообщение 1.4.2021, 4:22
Сообщение #102


*****

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



Кстати Dark, с новым getiamge ломается твой FindString) он при проверке хендла сравнивает число со строкой потому что
Код
default.window       = "workwindow"
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 1.4.2021, 4:34
Сообщение #103


***********

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



Цитата
default.window = "workwindow"

Это вообще выглядит, как ошибка. Насколько я понимаю там подразумевался workwindow(). Вообще не понимаю, как оно без указания хендла молгло работать.

Либо какие-то хвосты crystal lua и попытки вывести workwindow в переменную вместо функции (одно время в луа это была именно переменная).

на мой взгляд будет корректно вот так:
default.window = workwindow -- Метод|хендл_окна в котором происходит поиск (если указан источник изображения(source), то параметр будет проигнорирован)
и второе место для фикса:
if options.window == nil then options.window = default.window() end


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


***********

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



Пофикшены утечки памяти.


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


*****

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



Цитата(DarkMaster @ 1.4.2021, 4:34) *

Это вообще выглядит, как ошибка. Насколько я понимаю там подразумевался workwindow(). Вообще не понимаю, как оно без указания хендла молгло работать.

Либо какие-то хвосты crystal lua и попытки вывести workwindow в переменную вместо функции (одно время в луа это была именно переменная).

на мой взгляд будет корректно вот так:
default.window = workwindow -- Метод|хендл_окна в котором происходит поиск (если указан источник изображения(source), то параметр будет проигнорирован)
и второе место для фикса:
if options.window == nil then options.window = default.window() end

Теперь работает, ничего не ищет но с ошибкой не вылетает (IMG:style_emoticons/default/biggrin.gif) Не ищет это из-за приложения там по хендлу черный экран (IMG:style_emoticons/default/smile.gif) С методом 2 ищет, а вот с 0 нет.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 1.4.2021, 8:29
Сообщение #106


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



По поводу шага. Вот внизу у вас закладки с номером текущей странички. Как узнать которая активна?
Можно узнать без шага? Конечно можно. А с шагом? По скорости однозначно быстрее. Реализация? внутри поиска + 1 оператор. Я сам использовал шаг ну раза 4. Это было в Пилоте. При нынешних скоростях возможно шаг и не актуален. Но я у себя оставил, одна строчка кода мне нисколько не мешает.

Я 100пудово могу нарисовать задачу, где без шага вам придётся лопатить массив полученных пикселей, используя кучу математики (div-ить, mod-ить и т.д), а с шагом просто найти ПЕРВЫЙ удовлетворяющий условию поиска пиксель.

А вот color ну реально не нужен. Обычное упрощение, расчитанное ну уж на совсем неопытного пользователя. Никакого реального функционала он не несёт.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 1.4.2021, 9:28
Сообщение #107


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



А вообще Дарк, по поводу шага, можно действительно на него плюнуть. При нынешних возможностях ничто не мешает организовать этот самый шаг в цикле и просто вызывать в цикле финд столько, сколько нужно, хоть десятки раз. Это действительно было актуально, когда в Пилоте не было поиска в памяти и каждый вызов финда был на вес золота.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 1.4.2021, 12:02
Сообщение #108


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Нашёл я причину моих мытарств, так и заставили штудировать СИ.
Код

--lua
local ffi = require("ffi")
local FILE_READ_DATA = 0x1 local FILE_WRITE_DATA = 0x2
local GENERIC_WRITE = 0x40000000
local FILE_SHARE_READ = 0x00000001  local FILE_SHARE_WRITE = 0x00000002
local CREATE_ALWAYS = 0x2
local OPEN_ALWAYS = 4
local FILE_ATTRIBUTE_NORMAL = 0x80
ffi.cdef[[
    typedef unsigned long DWORD;
    typedef DWORD *LPDWORD;
    typedef void *LPVOID;
    typedef const void *LPCVOID;
    bool WriteFile(int hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, int lpOverlapped);
    int CreateFileA(const char* lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode,
        int lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, int hTemplateFile);
    bool CloseHandle(int hObject);
]]
function saveF(path)
    local C = ffi.C
    local s,s2 = "qwertyui" , "asdfghjk"
--    local hFile = C.CreateFileA(path, GENERIC_WRITE, 0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL,0)
    local hFile = C.CreateFileA(path, 3, 3, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,0) -- так на мой вгляд правильнее
--    local dwWritten = ffi.new('LPDWORD')  -- а если разремарить и заремарить строку ниже - смотри дальнейшие комменты
    local dwWritten = ffi.new'DWORD[1]'
    log("pass1")
    C.WriteFile(hFile, s2, 4, dwWritten, 0)
    log("pass2")   -- хрен вам
    C.WriteFile(hFile, s, 6, dwWritten, 0)
    log("pass3")   -- хрен ещё раз
    C.CloseHandle(hFile)
    log("pass4")   -- и какого хрена ещё надо, вот и блокировка файла Пилотом
end
-- кстати если вместо нулей ставить nil, хрен вам покажет сразу сам Пилот
saveF([[C:\screen_desktop.txt]])


Cirus, Дарк - спасибо, только благодаря совместным вашим усилиям я победил эту хрень.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 1.4.2021, 12:05
Сообщение #109


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26867
Пользователь №: 16.971
Возраст: 29



Цитата
Нашёл я причину моих мытарств

И в чём она? Работает и с этим ffi.new('LPDWORD') и с этим ffi.new'DWORD[1]'.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 1.4.2021, 12:14
Сообщение #110


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



У меня не работает. Почему не знаю.

У меня выведет в лог только pass1 и файл будет 4 байта и заблокирован.

А уж почему так?? Я в этих СИ-шных типах плохо ориентируюсь.

Интересно конечно услышать ещё мнения других. Это только у меня так?? Если только у меня - тоже встаёт вопрос, а что у меня не так.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Madeus
сообщение 1.4.2021, 12:45
Сообщение #111


*****

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



Цитата(sutra @ 1.4.2021, 12:14) *

У меня не работает. Почему не знаю.

У меня выведет в лог только pass1 и файл будет 4 байта и заблокирован.

А уж почему так?? Я в этих СИ-шных типах плохо ориентируюсь.

Интересно конечно услышать ещё мнения других. Это только у меня так?? Если только у меня - тоже встаёт вопрос, а что у меня не так.

Запустил код вышел с LPDWORD и с DWORD, файл сохраняется никаких ошибок нет
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 1.4.2021, 13:20
Сообщение #112


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Ошибок не будет. Файл должен быть 10 байтов. Должно 4 раза вывести в лог "pass" и файл должен удаляться не выходя из Пилота.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 1.4.2021, 13:31
Сообщение #113


***********

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



В моей скринилке я пока шаред не врубил оно блочилось. Вообще оно как бы странно, но каких-то глобальных проблем от шареда я не вижу. Во-первых кто будет в скрины писать в несколько потоков? Ну хорошо, кто-то наваял мегакод, решил фигачить в одинаковые файлы скриншоты с разных скриптов... Ну запретим мы шаред - выбьет еррор. Легче станет?) Не думаю...

почему OPEN_ALWAYS а не CREATE_ALWAYS?


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


*****

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



Цитата(sutra @ 1.4.2021, 13:20) *

Ошибок не будет. Файл должен быть 10 байтов. Должно 4 раза вывести в лог "pass" и файл должен удаляться не выходя из Пилота.

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


***********

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



Цитата
А вот color ну реально не нужен. Обычное упрощение, расчитанное ну уж на совсем неопытного пользователя.

Здравствуйте, я совсем не опытный пользватель видимо) У меня половина скриптов в if color(x, y) == c then. В текущем состоянии это самая часто вызываема функция у меня. Выкатывать финдколор каждый раз имхо идея не очень. Так же в текущем состоянии пилот не может получить "красивыми" способами захвата экрана цвет пикселя.

Madeus,
Проверил еще раз по координатам и смещениям с выключенным abs_flag и методом поиска 0 - все шуршит.
Можно мне получить полные инструкции для воспроизведения. Тестами занимаюсь на пэинте - воспроизвести не получается. Подозреваю, что это как раз может быть как-то связано с менюшками и заголовками.

Madeus, что именно с финдстрингом случается? Каков синтаксис запуска? Продолжает ли он работать при включенном/выключенном abs_flag и методе 0? По хендлу? При методе 2?


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


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
почему OPEN_ALWAYS а не CREATE_ALWAYS?

Вопрос не ко мне (код cirus). Но насколько я врубался в тему, разницы нет. Криэйт просто перезапишет любой файл однозначно. На существующем опен я не проверял.

Код
 OPEN_ALWAYS
4
Opens a file, always.
If the specified file exists, the function succeeds and the last-error code is set to ERROR_ALREADY_EXISTS (183).

If the specified file does not exist and is a valid path to a writable location, the function creates a file and the last-error code is set to zero.


Вообще (насколько я понимаю) блочит если не закрывает дескриптор файла. Странно почему у всех по разному. Может от среды обитания зависит? Я всё использую как есть. Может у других что-то плюсом? Отладка, ... винда ... Пилот (у меня 2.41 дек. 2018).

Дарк, а что, color быстр? Я принципиально им не пользуюсь. Делаю снимок интересующей меня зоны и работаю ИСКЛЮЧИТЕЛЬНО с образом, так никогда никаких разночтений не будет. Если меня что-то не устраивает - делаю скрин, всё по моему абсолютно логично.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 1.4.2021, 14:04
Сообщение #117


***********

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



Цитата

Вообще (насколько я понимаю) блочит если не закрывает дескриптор файла. Странно почему у всех по разному. Может от среды обитания зависит? Я всё использую как есть. Может у других что-то плюсом? Отладка, ... винда ... Пилот (у меня 2.41 дек. 2018).

Я недавно перешел на ночную версию. В релизе есть проблемы с обновлением справки с вики. В целом ночную пытаюсь перевести в разряд релизов, пока есть проблемы связи с кнайтом и нежеланием дестракшена лезть в его вотчину.
Почему блочит в рамках одного процесса не уверен. Возможно это как-то связано с потоками, не представляю как пилот и машина луа могут быть в одном потоке.


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


*****

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



Цитата(sutra @ 1.4.2021, 14:02) *

Вообще (насколько я понимаю) блочит если не закрывает дескриптор файла. Странно почему у всех по разному. Может от среды обитания зависит? Я всё использую как есть. Может у других что-то плюсом? Отладка, ... винда ... Пилот (у меня 2.41 дек. 2018).

Win 10 Pro 64 лиценз со всеми обновлениями, пилот 2.41 b4
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 1.4.2021, 14:06
Сообщение #119


***********

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



Цитата
Дарк, а что, color быстр? Я принципиально им не пользуюсь.

Нет, старый - тормоз. Но каковы варианты если нужно проверить одну точку? Финдколора не было вообще, делать финдимиджи по одному пикселю каждый раз я не хочу.
Новый по скорости особо не отличается от get pixel. Пиксель тоже надо вкрутить имхо, но все по порядку. Хочу потихоньку к имиджу перейти, параллельно фиксить проблемки.


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


*****

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



Цитата(DarkMaster @ 1.4.2021, 13:44) *

Madeus,
Проверил еще раз по координатам и смещениям с выключенным abs_flag и методом поиска 0 - все шуршит.
Можно мне получить полные инструкции для воспроизведения. Тестами занимаюсь на пэинте - воспроизвести не получается. Подозреваю, что это как раз может быть как-то связано с менюшками и заголовками.

Тут уже запутался в чем проблема и какой версии последней с color`ом или предыдущей?
Цитата(DarkMaster @ 1.4.2021, 13:44) *

Madeus, что именно с финдстрингом случается? Каков синтаксис запуска? Продолжает ли он работать при включенном/выключенном abs_flag и методе 0? По хендлу? При методе 2?

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

30 страниц V « < 4 5 6 7 8 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

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