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

 
Ответить в эту темуОткрыть новую тему
> Ошибка при использовании GetImage.
Varlock
сообщение 31.1.2018, 21:47
Сообщение #1


**

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



Собственно столкнулся вот с какой проблемой:
в ходе попытки оптимизировать работу моих скриптов с картинками(а то ищут местами по 10-15 секунд), начал с одного из самых простых.
В итоге примерно через 10-15 минут работы скрипта возникает какая-то ошибка. Лог выглядит так:
Цитата
21:28:35 2 (FTuppingHeroes.txt, 23): count of images 0
21:28:37 2 (FTuppingHeroes.txt, 22): 0
21:28:37 2 (FTuppingHeroes.txt, 23): count of images 0
21:28:38 2 (FTuppingHeroes.txt, 22): 0
21:28:38 2 (FTuppingHeroes.txt, 23): count of images 0
21:28:39 2 (FTuppingHeroes.txt, 22): 0
21:28:39 2 (FTuppingHeroes.txt, 23): count of images 0
21:28:40 2 (FTuppingHeroes.txt, 22): 0
21:28:40 2 (FTuppingHeroes.txt, 23): count of images 0
21:28:42 2 (FTuppingHeroes.txt, 16): set - Некуда копировать картинку.
21:28:45 2 (FTuppingHeroes.txt, 20): set - Не удалось создать картинку из памяти.
21:28:45 2 (FTuppingHeroes.txt, 20): set - Не закрылось.
21:28:45 2 (FTuppingHeroes.txt, 20): set - Не открылось.
21:28:45 2 (FTuppingHeroes.txt, 22): -1
21:28:45 2 (FTuppingHeroes.txt, 23): count of images 100
21:28:45 2 (FTuppingHeroes.txt, 34): set - Не удалось создать картинку из памяти.
21:28:45 2 (FTuppingHeroes.txt, 34): set - Не закрылось.
21:28:45 2 (FTuppingHeroes.txt, 34): set - Не открылось.
21:28:46 2 (FTuppingHeroes.txt, 16): set - Не удалось создать картинку из памяти.
21:28:46 2 (FTuppingHeroes.txt, 16): set - Не закрылось.
21:28:46 2 (FTuppingHeroes.txt, 16): set - Не открылось.
21:28:46 2 (FTuppingHeroes.txt, 22): 0
21:28:46 2 (FTuppingHeroes.txt, 23): count of images 0
21:28:47 2 (FTuppingHeroes.txt, 16): set - Не удалось создать картинку из памяти.
21:28:47 2 (FTuppingHeroes.txt, 16): set - Не закрылось.
21:28:47 2 (FTuppingHeroes.txt, 16): set - Не открылось.

где первая часть, когда count of images 0 идут через строчку это штатная работа скрипта, он ожидает картинку(которых может сразу штук 5 появиться)
а вот далее начинаются ошибки и продолжаются они пока не остановишь скрипт. При этом на появляющиеся картинки он перестаёт реагировать.

Сам код скрипта:
Код

//
// Скрипт апает по мере накопления ресурсов.
//инициализация скрипта:

set linedelay 0 //отключаем задержку между строками.

//сохраняем в массив картинки нужной кнопки и её же при наведенном курсоре.
set %Images [1] LoadImage (C:\Users\Владимир\Desktop\автокликер\images\ft\redyToUp.bmp)
set %Images [2] LoadImage (C:\Users\Владимир\Desktop\автокликер\images\ft\redyToUpLitning.bmp)

//основной цикл действий
:begin

wait 1s  //небольшая задержка чтобы меньше грузить комп, если кнопки не появляются.

//сохраняем картинку окна.
set %window GetImage  (100 200 1500 800)
set #imgadress %window [1 1] //получаем адрес окна в памяти.

//ищем картинки с кнопками для апов.
set #a findimage (0 0 1400 600 (%Images [1 1]) %Result #imgadress 99 -1 5)

log #a                                       // результат поиска, на случай ошибок.
log count of images size(%Result)
if #a > 0                                    // если картинка найдена
    for #i size(%Result) 1 -1         //перебираем от большего к меньшему т.к. более важные кнопки находятся ниже.
        set #ButtonX %Result[#i 1] + 15                    //добавляем к найденым координатам пиксеей, чтобы кликать куда надо
        set #ButtonY %Result[#i 2] + 10
        log координаты кнопки #i это #ButtonX и #ButtonY //лог для контроля
        left #ButtonX #ButtonY             //кликаем по найденой кнопке
        wait 1500 //ожидаем полторы секунды чтобы если надо нажать несколько кнопок программа успевала среагировать.
    end_for
end_if

set #a findimage (0 0 1400 600 (%Images [2 1]) %Result #imgadress 95 1 3) //ищем подсвеченную кнопку на случай если курсор остался напротив последней нажатой и она снова активна.
if #a > 0
    set #ButtonX %Result[#i 1] + 15                    //добавляем к найденым координатам пиксеей, чтобы кликать куда надо
    set #ButtonY %Result[#i 2] + 10
    log координаты подсвеченной кнопки #ButtonX и #ButtonY
    left #ButtonX #ButtonY             //кликаем по найденой кнопке
end_if

goto begin


какие есть мысли в чём может быть причина?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 31.1.2018, 22:19
Сообщение #2


**********

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



Цитата
В итоге примерно через 10-15 минут работы скрипта возникает какая-то ошибка.

При этом пилот сожрёт 2гб памяти.
Изображение, полученное с помощью Getimage, надо удалять после того как оно не нужно.
Код
set #del DeleteImage (%window [1 1])  // удалить изображение из памяти
goto begin







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


**********

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



Цитата
ищем подсвеченную кнопку на случай если курсор остался напротив последней нажатой и она снова активна.

От этого можно попробовать избавиться. Поиск статичных точек 3й спойлер.
Цитата
добавляем к найденым координатам пиксеей, чтобы кликать куда надо

Findoffsetx
Код
set Findoffsetx 15    //смещение вправо на 15 пикселей    
set Findoffsety 10      //смещение вниз на 10 пикселей
// дальше findimage или findcolor, все координаты будут пересчитаны с учётом указанного смещения


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


**

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



Цитата(cirus @ 31.1.2018, 22:19) *

При этом пилот сожрёт 2гб памяти.

Ну на компе стоит 12, так что пары-тройки съеденых я как-то даже не заметил (IMG:style_emoticons/default/smile.gif)
За функцию удаления картинок спасибо (IMG:style_emoticons/default/smile.gif)

Цитата(cirus @ 31.1.2018, 22:38) *

От этого можно попробовать избавиться. Поиск статичных точек 3й спойлер.

Findoffsetx
Код
set Findoffsetx 15    //смещение вправо на 15 пикселей    
set Findoffsety 10      //смещение вниз на 10 пикселей
// дальше findimage или findcolor, все координаты будут пересчитаны с учётом указанного смещения


за это тоже спасибо (IMG:style_emoticons/default/smile.gif) вот только данный скрипт я планирую не как окончательный вариант, а как лишь одну из функций окончательной программы (IMG:style_emoticons/default/smile.gif) просто пока отрабатываю отдельные элементы чтобы потом собрать их воедино (IMG:style_emoticons/default/smile.gif) Поэтому кнопки и области действия там будут разные и смещения для некоторых из них тоже будут требоваться разные (IMG:style_emoticons/default/smile.gif) Я ещё прикину, как лучше получиться - каждый раз задавать для каждого своё смещение, или сделать офсеты для самого распространенного варианта, а остальные точки считать уже относительно этих офсетов(просто в этом случае боюсь рано или поздно запутаться...)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 1.2.2018, 0:04
Сообщение #5


**********

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



Можно вообще без смещений обойтись. Например, надо найти кнопку, делайте картинку не всей кнопки, а только части. Причём делать картинку не от левого верхнего угла кнопки, а чуть ниже и левее на те же 15 и 10 пикселей.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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